在接下来的内容中:
public interface SomeInteface<A, B> {
public B doSomething(A a);
}
我希望实现这样一个版本:方法doSomething
返回参数a
。
我尝试使用Holder
类;
class Holder<A> {
public A value;
public(A a){this.value = a;}
}
并返回Holder
。然而,我不确定如何定义SomeInterface
的实现类,以便我能够这样做。
以下内容甚至无法编译:
public class SomeImplementation<X> implements SomeInterface<T> {
private class Holder<A> {
public A value;
public class Holder<A>{
public A value;
public(A a){this.value = a;}
}
}
class Implementation<A, Holder<A>> implements SomeInterface<A, Holder<A>>{
public Holder<A> doSomething(A a){
//do stuff
return new Holder(a);
}
}
}
我在这里搞砸了什么?
class Implementation<A, Holder<A>>
中显示红色问号。 - Cratylus<A,Holder<A>>
是没有意义的;你应该在类声明中指定参数名称,在实际构造这样的对象时指定泛型类型参数。你需要像这样的东西:class Implementation<A, B> implements SomeInterface<A, B>
,然后稍后声明一个变量,如Implementation<String, Holder<String>> myImpl = new Implementation<>();
- dlev