class GenericBase<T> {
private T baseVariable;
public T get() {
return baseVariable;
}
public void set(T t){
baseVariable = t;
}
}
class GenericSubTwo<T, V> extends GenericBase<T>{
private V subVariable2;
public V get2(){
return subVariable2;
}
}
public TestClass{
public static void main(String[] args){
GenericBase<Integer> sub2 = new GenericSubTwo<>();
}
}
在这种情况下,菱形运算符是否真的 make new GenericSubTwo
最佳答案
这真的没关系,因为无论如何你都看不到 V
是什么。
V
被推断为 Object
,因为它是 V
上的边界。
更新
实际上,V
似乎被推断为 ?
,因为它可以转换为任何东西。
GenericBase<Integer> sub2 = new GenericSubTwo<>();
// Valid cast: T must be Integer, but V can be anything
GenericSubTwo<Integer, String> x = (GenericSubTwo<Integer, String>) sub2;
关于java - 当我们需要在泛型类中多一个参数时,菱形运算符会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63579589/