package symbols.value;

public class Value<T> {

    private final Value_t _type;
    private T _data;

    public Value() {
        _type = Value_t.UNDEFINED;
        _data = null;
    }

    public Value(Value_t type, T data) {
        _type = type;
        _data = data;
    }

    public Value_t getType() {
        return _type;
    }

    public T getData() {
        return _data;
    }

    public void setData(T _data) {
        this._data = _data;
    }

    @Override
    public String toString() {
        return String.format("Value_t: %-25s Data: %s", _type, _data)+".\t";
    }

}

package symbols.value;

public class Value<T> {

    private final Value_t _type;
    private T _data;

    public Value() {
        _type = Value_t.UNDEFINED;
        _data = null;
    }

    public Value(Value_t type, T data) {
        _type = type;
        _data = data;
    }

    public Value_t getType() {
        return _type;
    }

    public T getData() {
        return _data;
    }

    public void setData(T _data) {
        this._data = _data;
    }

    public boolean isUserFunction() {
        return _type.equals(Value_t.USER_FUNCTION);
    }

    public boolean isLibraryFunction() {
        return _type.equals(Value_t.LIBRARY_FUNCTION);
    }

    @Override
    public String toString() {
        return String.format("Value_t: %-25s Data: %s", _type, _data) + ".\t";
    }

}

Add methods to check for User/Library function type.