gpt4 book ai didi

java - 获取泛型类型参数的正确方法

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

以下代码获取在接口(interface) SomeGenericInterface 中泛型声明的第一个类型参数类,该类在类 SomeClass 中具体实现。

这段代码确实有效。

问题是:它在任何情况下都有效吗,即以下两个类方法:

  • getInterfaces()
  • getGenericInterfaces()

保证这些方法返回的接口(interface)始终具有相同数量的元素以及相同的相应顺序?

或者有更安全的方法吗?

<!-- language: lang-java -->

Class clazz = SomeClass.class;

Class classes[] = clazz.getInterfaces();
Type types[] = clazz.getGenericInterfaces();
ParameterizedType found = null;

for (int i=0; i<classes.length; i++) {
if ( classes[i] == SomeGenericInterface.class) {
found = (ParameterizedType) types[i];
break;
}
}
if (found == null) {
return null;
}
Class firstType = (Class) found.getActualTypeArguments()[0];

最佳答案

javadoc对于这两种方法状态:

If this object represents a class, the return value is an array containing objects representing all interfaces implemented by the class. The order of the interface objects in the array corresponds to the order of the interface names in the implements clause of the declaration of the class represented by this object.

所以你的两个问题的答案都是肯定的,元素数量相同且顺序相同。

关于java - 获取泛型类型参数的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8553423/

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