java - 我可以将泛型属性存储到对象的字段中吗

标签 java generics

假设有以下类 stub :

public class Foo<T> {
  private Class<T> type;

  public Foo<T> () {}
}

我可以存储通用类型吗 T进场type在构造函数中,不将构造函数的签名更改为“public Foo<T> (Class<T> type)”?

如果是,怎么办?如果不是,为什么?

type = T”似乎不起作用。

最佳答案

否 - 类型删除意味着您必须在执行时提供一些东西。您可以提供 T 的一个实例或 Class<T>但是类本身只会将每次出现的 T 替换为 Object .

这种事情是 Java 的泛型与 .NET 中的泛型相比的最大缺点之一。 (另一方面,在 Java 中的方差故事比在 .NET 中更强大 - 如果更令人困惑的话。)

关于java - 我可以将泛型属性存储到对象的字段中吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/304640/

相关文章:

java - 使用 Java 在 Bugzilla 中创建错误时出错

java - Postgres 串行非空约束

java - 如何使用 main.xml 中定义的布局添加按钮?

java - 为什么在我们具有与方法参数相同的泛型列表的以下两个方法调用中存在差异?

delphi - 有没有一种简单的方法将 TDictionary 内容复制到另一个中?

java - 在 Eclipse 中禁用作为 Java 应用程序运行选项

java - 多线程环境下使用的UDP Socket.receive()方法

generics - 使用泛型获取列表类,例如:List<Number>::class

SwiftUI - 我可以为通用 View 定义一个空的初始值设定项吗?

java - 为什么为非泛型方法或构造函数提供显式类型参数会编译?