当前位置: 首页 > 知识库问答 >
问题:

创建泛型类列表

岳研
2023-03-14
public static final <T> List<T> list(T t) {
    final List<T> rv = new ArrayList<>();
    rv.add(t);
    return rv;
}
final Class<?> aClass = Integer.class;
final List<Class<?>> trivialListOfClasses = list(aClass);
[javac] /some/path/Foo.java:41: error: incompatible types
[javac]             final List<Class<?>> trivialListOfClasses = list(aClass);
[javac]                                                                  ^
[javac]   required: List<Class<?>>
[javac]   found:    List<Class<CAP#1>>
[javac]   where CAP#1 is a fresh type-variable:
[javac]     CAP#1 extends Object from capture of ?
[javac] 1 error

共有1个答案

锺离声
2023-03-14

能够在javac 1.8.0_144上使用-source7-target7进行复制。

如果您只打算从列表中删除一些内容,那么一个可行的方法就是使用?扩展类<?>:

Class<?> aClass = Integer.class;
List<? extends Class<?>> trivialListOfClasses = list(aClass);
Class<?> bClass = trivialListOfClasses.get(0); // works
// trivialListOfClasses.add(String.class); // doesn't work, though

同样有效的是在对list的调用中手动提供泛型类型:

Class<?> aClass = Integer.class;
List<Class<?>> trivialListOfClasses = Util.<Class<?>>list(aClass);
Class<?> bClass = trivialListOfClasses.get(0); // works
trivialListOfClasses.add(String.class); // also works
 类似资料:
  • 问题内容: 如何创建泛型类型的数组?通用方法如何工作?它返回通用数组的副本。因此可以创建通用数组。但是如何?怎么能写一个类似的方法呢? 问题答案: 如果需要在运行时创建它,则至少需要在此时知道类型,因此可以使用以下方法: where 是泛型类型,是的类,并且是初始大小。 这里的文件

  • 我需要将包含类型为Pair的对象的列表序列化为xml 首先,我创建了一个类PairList来保存对的列表,然后我创建了一个实际的类,它表示一对两个值,key和value。 然后,我尝试序列化它: 不幸的是,我遇到了一个异常:。欢迎任何关于如何避免此异常并序列化该类的想法。 如果我选择不序列化ttype和utype字段(通过将其设置为受保护或私有),则序列化有效。我不明白为什么它不想序列化类型字段。

  • 我有很多实体扩展了实体,也有很多数据扩展到 我有一个通用的存储库、服务和映射器,如下所示 我的仓库: 我的服务: 我的地图绘制者: 我想在方法中从T创建一个对象,在类中从方法中从Dto创建一个对象

  • 问题内容: 是否可以在Java中创建泛型类型的实例?我正在根据我所看到的答案进行思考no(由于类型擦除),但是如果有人能看到我所缺少的内容,我将很感兴趣: 编辑:事实证明,超级类型令牌可以用于解决我的问题,但是它需要很多基于反射的代码,如下面的一些答案所示。 问题答案: 你是对的。你做不到。但你可以将其更改为 但这有效。以工厂模式包装它会使它更具容忍性。

  • 我希望有一个泛型类(在类型T中),它保存一个可为空的TS列表。 编译失败,出现以下错误。 错误CS0453:类型't'必须是非空值类型,才能将其用作泛型类型或方法'System.Nullable'中的类型参数't' 我做错了什么?

  • 问题内容: 因此,首先,我的代码基于该线程中可接受的答案。 我正在尝试从数据库创建一个表视图,并且该表视图应根据用户要求的数据动态填充。到目前为止,尽管工作正常,但我的问题是,从数据库收集的所有值都在Java中解释为字符串,但是我需要它们的实际值。 这样做的原因是javafx tableview的内置排序机制将所有数字排序为字符串,因为填充表时它们的类型会转换为字符串。 示例:值921、200、1