[英]Java: use generics in method return that differs from generic class parameter
[英]Java generics return holder object from a generic method
在下面的:
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> implements SomeInteface<A, Holder<A>>{
public Holder<A> doSomething(A a){
//do stuff
return new Holder<A>(a);
}
}
在类名中,您可以定义泛型变量及其约束。 您不需要Holder变量。
我不明白为什么你这么难。 你说
我想实现一个版本,其中方法
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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.