Java 将对象的实例类型传递给泛型类类型参数

标签 java object generics type-parameter instancetype

是否可以将对象实例类型作为泛型的类型参数传递?类似于以下内容:

Object obj = new Double(3.14); //Instance type Double

//Could I do the following?
Item<obj.getInstanceType()> item = new Item<obj.getInstanceType()>(obj);

public class Item<T> {
    private T item;
    public Item(T item) {
        this.item = item
    }
    public T getItem() {
        return this.item;
    }
}

最佳答案

不......泛型类型应该在编译时已知。

泛型用于在编译时捕获可能的运行时异常。

List<Integer> list = new ArrayList<Integer>();
//..some code
String s = list.get(0); // this generates compilation error

因为编译器知道 list 仅用于存储 Integer 对象,并且将从 list 获取的值分配给 String 肯定是错误的。如果泛型类型是在运行时确定的,这会很困难。

关于Java 将对象的实例类型传递给泛型类类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17070554/

相关文章:

java - 如何在 Spring Boot 属性中生成当前年份

对象中的Javascript自引用值作为同一对象的第二个值中的变量

java - 通用类型扩展了接口(interface),但出现不兼容类型错误

java - 相同的删除,但类型不同。

java - 理解 HashMap 键- java

java - 将字符串中每个 int 的总和相加

java - 我如何使用java中的客户端服务器套接字编程通过网络流式传输 Parquet 文件

java - java中的对象数组

java - 为什么按钮对象的行为会因声明位置的不同而不同

c# - 如何将 DataContext 绑定(bind)到 XAML 中的通用 ViewModel?