All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.greatbit.utils.collection.Wrapper Maven / Gradle / Ivy

The newest version!
package ru.greatbit.utils.collection;

import java.util.function.Function;

/**
 * Created by azee on 31.05.16.
 */
public class Wrapper {
    private T object;
    Function meaningValue;

    public Wrapper() {
    }

    public Wrapper(T object, Function meaningValue) {
        this.object = object;
        this.meaningValue = meaningValue;
    }

    public Wrapper(T object) {
        this.object = object;
    }

    public T getObject() {
        return object;
    }

    public void setObject(T object) {
        this.object = object;
    }

    public Function getMeaningValue() {
        return meaningValue;
    }

    public void setMeaningValue(Function meaningValue) {
        this.meaningValue = meaningValue;
    }

    public Wrapper withObject(T object){
        this.object = object;
        return this;
    }

    public Wrapper withEquals(Function meaningValue){
        this.meaningValue = meaningValue;
        return this;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Wrapper && meaningValue != null){
            Object meaningValueObj = meaningValue.apply(this.getObject());
            obj = meaningValue.apply((T) ((Wrapper) obj).getObject());
            if (meaningValueObj == null && obj == null){
                return true;
            }
            if (meaningValueObj == null){
                return obj.equals(meaningValueObj);
            } else {
                return meaningValueObj.equals(obj);
            }
        }
        return equals(obj);
    }

    @Override
    public int hashCode() {
        Object meaningValueObj = meaningValue.apply(this.getObject());
        return meaningValueObj != null ? meaningValueObj.hashCode() : 0;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy