Java 8泛型与通配符有关
我有接口:Java 8泛型与通配符有关,java,generics,wildcard,Java,Generics,Wildcard,我有接口: public interface AddableBox<T> extends Box<T> { public AddableBox<T> add(AddableBox<T> other); } public接口AddableBox扩展框{ 公共AddableBox add(AddableBox其他); } 还有一些类可以使用它: public class TestClass { public <
public interface AddableBox<T> extends Box<T> {
public AddableBox<T> add(AddableBox<T> other);
}
public接口AddableBox扩展框{
公共AddableBox add(AddableBox其他);
}
还有一些类可以使用它:
public class TestClass {
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
a1.add(a2);
}
}
公共类TestClass{
public问题在于您在声明类型参数T
的绑定AddableBox
中使用的通配符。一个AddableBox
不能与另一个AddableBox
的类型相同,并且AddableBox
中的add
方法要求它们是相同的
您可以使用T
本身作为绑定的类型参数。更改
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
public问题在于您在声明类型参数T
的绑定AddableBox
中使用的通配符。一个AddableBox
不能与另一个AddableBox
的类型相同,并且AddableBox
中的add
方法要求它们是相同的
您可以使用T
本身作为绑定的类型参数。更改
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
public问题在于您在声明类型参数T
的绑定AddableBox
中使用的通配符。一个AddableBox
不能与另一个AddableBox
的类型相同,并且AddableBox
中的add
方法要求它们是相同的
您可以使用T
本身作为绑定的类型参数。更改
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
public问题在于您在声明类型参数T
的绑定AddableBox
中使用的通配符。一个AddableBox
不能与另一个AddableBox
的类型相同,并且AddableBox
中的add
方法要求它们是相同的
您可以使用T
本身作为绑定的类型参数。更改
public <T extends AddableBox<?>> void SomeMethod(T a1, T a2){
public好的,我明白了。以前版本的方法是:public void SomeMethod(TValue a1,TValue a2){a1.add(a2);}
。可以使用一个泛型参数?但我不明白它是如何使用的。例如,我想使用AddableBox。Integer不扩展AddableBox…如果您有一个AddableBox
实现,那么类型参数应该是该类本身。例如,如果您有IntegerBox
扩展AddableBox
,则en 2IntegerBox
es可以传递给SomeMethod
方法。好的,我明白了。以前版本的方法是:public void SomeMethod(TValue a1,TValue a2){a1.add(a2);}
。可以使用一个泛型参数?但我不明白它是如何使用的。例如,我想使用AddableBox。Integer不扩展AddableBox…如果您有一个AddableBox
实现,那么类型参数应该是该类本身。例如,如果您有IntegerBox
扩展AddableBox
,则en 2IntegerBox
es可以传递给SomeMethod
方法。好的,我明白了。以前版本的方法是:public void SomeMethod(TValue a1,TValue a2){a1.add(a2);}
。可以使用一个泛型参数?但我不明白它是如何使用的。例如,我想使用AddableBox。Integer不扩展AddableBox…如果您有一个AddableBox
实现,那么类型参数应该是该类本身。例如,如果您有IntegerBox
扩展AddableBox
,则en 2IntegerBox
es可以传递给SomeMethod
方法。好的,我明白了。以前版本的方法是:public void SomeMethod(TValue a1,TValue a2){a1.add(a2);}
。可以使用一个泛型参数?但我不明白它是如何使用的。例如,我想使用AddableBox。Integer不扩展AddableBox…如果您有一个AddableBox
实现,那么类型参数应该是该类本身。例如,如果您有IntegerBox
扩展AddableBox
,则en 2IntegerBox
es可以传递给SomeMethod
方法。