gpt4 book ai didi

java - 如何获取 List 的类型?

转载 作者:行者123 更新时间:2023-12-01 18:34:36 24 4
gpt4 key购买 nike

我定义了一个对象,该对象在其构造函数中采用类型参数:

public DynParameterDaoImpl(Class<T1> type) {
super();
...
}

实例化效果很好

DynParameterDaoImpl myVar = new DynParameterDaoImpl(Atype.class);

有没有办法以列表的类型来做到这一点。以下内容不起作用..

DynParameterDaoImpl myVar = new DynParameterDaoImpl(List<Atype>.class);

最佳答案

没有。

List<AType>是一个类型,但它不是一个类,因为类型删除确保 List<X>由与 List<Y> 相同的类表示适用于所有引用类型XY .

例如,

List<String> strings = new ArrayList<String>();  // Legal
boolean b = strings instanceof List<Number>; // Compiler Rejects

编译器拒绝 instanceof检查,因为没有足够的信息可供虚拟机区分 List<String>List<Number> .

如果有可能获得像 List<String> 这样的非类类型的类值,则反射等效

Class<? extends List<String>> stringListClass = strings.getClass();  // Illegal
Class<? extends List<Number>> numberListClass = List<Number>.class; // Illegal
boolean b = numberListClass.isAssignableFrom(stringListClass);

会通过,这将无声地违反类型安全。

关于java - 如何获取 List<aType> 的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22614653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com