gpt4 book ai didi

java - 检索集合的类型

转载 作者:行者123 更新时间:2023-12-03 22:54:12 25 4
gpt4 key购买 nike

所以我在 Java 中有类似以下内容:

private List<SomeType>variable;

// ....variable is instantiated as so ...
variable = new ArrayList<SomeType>();

// there's also a getter
public List<SomeType> getVariable() { /* code */ }

我想做的是弄清楚 variableSomeType 的集合以编程方式。我读了here我可以从方法 getVariable() 中确定但是有什么方法可以直接从variable中判断出来吗? ?

我已经能够检索到 SomeType根据链接中的信息从 getter 方法中获取。我也成功地通过 SurroundingClass.getClass().getDeclaredFields() 检索了周围类的所有字段。但这并没有告诉我它是 List<SomeType> .

编辑:根据 bmargulies 的回应,执行以下操作将实现我想要的:

Field[] fields = SurroundingClass.getDeclaredFields();
/* assuming it is in fields[0] and is a ParameterizedType */
ParameterizedType pt = (ParameterizedType) fields[0].getGenericType();
Type[] types = pt.getActualTypeArguments();
/* from types I'm able to see the information I've been looking for */

最佳答案

由于类型删除,您无法从实例中获取它。在运行时,XXX<T>真的只是XXX .除非类做出特殊安排来存储 T 的类引用,否则它会完全消失。

您可以从 getDeclaredFields() 获取它。您必须在字段上调用 ​​getGenericType,而不是 getType,然后您必须对 ParameterizedType 进行一些转换,然后向它询问您想要的参数。

关于java - 检索集合的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526982/

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