我有一个父类,Parent有两个子类,A和B. 我有一个接口,Function<Type1 extends Parent,Type2 extends Parent>允许程序员编写一个特定的函数,Type2 of(Type1 t)将 Type1 转换为 Type2。该接口封装在一个类中,该类Wrapper<Type1 extends Parent,Type2 extends Parent>包含有用的信息,例如Class<Type1> type1Class等。
我的问题出现了,当我尝试实施add该方法的Wrapper类Wrapper<Type1,Type2> add(Wrapper<Type1,Type2> additionalWrapper)。我正在尝试将两个Functions 相加,但由于擦除,我很难得到 aType2而不是 a 输出Parent。
如何使add方法输出 aType2而不是 a Parent?
public class Parent {
protected int value;
public void setValue(int x){ value = x; }
public int getValue(){ return value; }
public Parent(){}
public Parent(int x){setValue(x);}
public Parent add(Parent p){return null;}
}
public class A extends Parent{
public A(){ setValue(1); }
public A(int x){ setValue(x); }
public A(B b){ setValue( b.getValue()); }
public A add(A a){ return new A( getValue()+a.getValue()); }
public A add(B b){ return new A( getValue()*b.getValue()); }
}
public class B extends Parent{
public B(){ setValue(2); }
public B(int x){ setValue(x); }
public B(A a){ setValue(a.getValue()); }
public B add(B b){ return new B(getValue() + b.getValue()); }
public B add(A a){ return new B(getValue() * a.getValue()); }
}
public interface Function <Type1 extends Parent, Type2 extends Parent> {
public Type2 of(Type1 t);
}
public class Wrapper<Type1 extends Parent, Type2 extends Parent> {
protected Function<Type1,Type2> function;
protected Class<Type1> type1Class;
protected Class<Type2> type2Class;
public Wrapper(final Class<Type1> t1, final Class<Type2> t2, Function<Type1,Type2> x) {
type1Class = t1;
type2Class = t2;
function = x;
}
public Type2 of(Type1 t){
return function.of(t);
}
动漫人物
HUWWW
相关分类