【发布时间】:2014-11-19 09:33:08
【问题描述】:
我在一个类中有一个 getter 方法,它返回一个对象列表。它看起来像这样:
public List <cars> getCars() {
// some code here
}
这个类除了这个之外还包含一些其他的getter。在另一个类中,我想获取第一个类中包含的所有getter方法,并显示方法的名称和返回的数据类型。
我能够得到上述方法的名称 (getCars) 和它返回的数据类型 (List)。但是,我似乎无法将“汽车”作为列表包含的对象类型。我能得到的最好的是“ObjectType”。有没有办法让“汽车”显示出来?我已经阅读了有关类型擦除以及如何在字节码中删除泛型的信息,因为它仅用于 Java 编译器的好处。我的问题与类型擦除有关吗?
是否可以显示“汽车”一词?当我阅读有关类型擦除的信息时,似乎有一种方法可以从列表中获取泛型,但我看到的示例是针对字符串和整数而不是对象的。
Get generic type of java.util.List
谢谢
【问题讨论】:
-
目前你是如何“获取”方法的名称的?我假设您在运行时使用反射,但这并不一定很清楚。返回
"ObjectType"的当前代码示例会有所帮助。 -
在你的问题中你说:我看到的例子是字符串和整数,而不是对象”,字符串和整数是对象,而不是基本类型。
-
@Andrzej Doyle,是的,我正在使用反射。我在“通用方法返回类型”部分关注了 Jenkov 在tutorials.jenkov.com/java-reflection/generics.html 上写的文章。它使用 ParameterizedType type = (ParameterizedType) returnType; Type[] typeArguments = type.getActualTypeArguments();
-
@Joeblade,真的。我是 Java 新手。不是故意用我的术语来混淆你。我的意思是用户定义的对象,例如汽车
-
@user3572079 没问题,我只是想指出用户定义的类和系统定义的类都是对象,以防您认为那里有特殊规则,但实际上没有。唯一的例外是 + 运算符,它在字符串上下文中硬连线到 String(或 toString() 实例方法)。
标签: java list object generics methods