以下内容:
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);
}
}
}
我在这里搞砸了什么?
答案 0 :(得分:2)
需要
class Implementation<A> implements SomeInteface<A, Holder<A>>{
public Holder<A> doSomething(A a){
//do stuff
return new Holder<A>(a);
}
}
在类名中,您可以定义泛型变量及其约束。您不需要Holder变量。
答案 1 :(得分:2)
我不明白为什么你这么难。你说
我想实现方法
doSomething
返回的版本 参数a
返回。
嗯,你可以做到这一点:
public class SomeImplementation<A> implements SomeInterface<A, A> {
public A doSomething(A a) {
// do stuff
return a;
}
}
无需持有人课程。 SomeInterface接口没有对类型参数施加任何约束,因此没有理由说它们不能相同。
或者,您可以允许使用两种不同的类型A和B对您的实现进行参数化,其中A扩展B(在某些情况下可能有用):
public class SomeImplementation<A extends B, B> implements SomeInterface<A, B> {
public B doSomething(A a) {
// do stuff
return a;
}
}