java - 当我们需要在泛型类中多一个参数时,菱形运算符会做什么?

标签 java generics

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(); 或者其他东西..我不明白发生了什么,因为在 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/

相关文章:

java - 在 Emacs 中突出显示 Java 中使用的 'bool'

Java 泛型和注解 : Type-Safe

Delphi:确定泛型的实际类型?

java - 带有 Class<?> 参数的 ObjectFactory

java - 如何从一种类型转换为除了包名称之外相同的多种类型?

java - 不能不使用ListCellRenderer

java - java做一些处理后如何将编码字符串写入数据库

java - 在 Jira 插件的速度模板方面需要一些帮助

delphi - 如何用泛型方法继承类?

java - 如何在 Java 中将 GPS 元数据添加到 TIFF?