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 2
IntegerBox
es可以传递给
SomeMethod
方法。好的,我明白了。以前版本的方法是:
public void SomeMethod(TValue a1,TValue a2){a1.add(a2);}
。可以使用一个泛型参数?但我不明白它是如何使用的。例如,我想使用AddableBox。Integer不扩展AddableBox…如果您有一个
AddableBox
实现,那么类型参数应该是该类本身。例如,如果您有
IntegerBox
扩展
AddableBox
,则en 2
IntegerBox
es可以传递给
SomeMethod
方法。好的,我明白了。以前版本的方法是:
public void SomeMethod(TValue a1,TValue a2){a1.add(a2);}
。可以使用一个泛型参数?但我不明白它是如何使用的。例如,我想使用AddableBox。Integer不扩展AddableBox…如果您有一个
AddableBox
实现,那么类型参数应该是该类本身。例如,如果您有
IntegerBox
扩展
AddableBox
,则en 2
IntegerBox
es可以传递给
SomeMethod
方法。好的,我明白了。以前版本的方法是:
public void SomeMethod(TValue a1,TValue a2){a1.add(a2);}
。可以使用一个泛型参数?但我不明白它是如何使用的。例如,我想使用AddableBox。Integer不扩展AddableBox…如果您有一个
AddableBox
实现,那么类型参数应该是该类本身。例如,如果您有
IntegerBox
扩展
AddableBox
,则en 2
IntegerBox
es可以传递给
SomeMethod
方法。