i have problem in my java project recently with generics. the following is the simplified version of my actual problem.
abstract class Value{
public int value;
Value(int v){ value = v; }
}
class Wrap<T> {
T data;
Wrap(T data){ this.data = data; }
public void add(T value){
data = actualAdd(data, value);
}
public T actualAdd(T p1, T p2){/* other code. don't worry */}
}
easy to see, i want to inherit Value
afterwards.
but when it comes to combine both, i.e.:
Wrap<? extends Value> wrapValue;
i really wish add
recieves Value
, i.e.:
wrapValue.add(Value value)
instead of
wrapValue.add(? extends Value value)
since i just want to add up the value, the other fields are irrelevant.
i know how to do it in static method, that should be:
public static void staticAdd(Wrap<? extends T> wrapper, T value){/**/}
but how can i have the same trick in method member?