如何获取泛型接口的方法返回值类型? 例如下面的泛型接口:public interface Test<V>{ V call();}在运行时,如何获取各实现该接口类的方法的V类型呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass(); (Class)pt.getActualTypeArguments()[0]; 参考文档: https://blog.csdn.net/qq_18242391/article/details/54251947 可以通过获取该类的所有实现类去获取各自的返回值。具体参考: List<Test> monitorLists = new ArrayList<>(); //delayedFindPackageName 代表包路径 Reflections reflections = new Reflections(delayedFindPackageName); Set<Class<? extends Test>> monitorClasses = reflections.getSubTypesOf(Test.class); for (Class<? extends Test> monitor : monitorClasses) { monitorLists.add(ApplicationContext.getBean(monitor)); } maven配置:<dependency> <groupId>org.reflections</groupId> <artifactId>reflections-spring</artifactId> <version>0.9.9-RC1</version></dependency> 补充一点,该接口是通过方法引用实现的,用各位的方法获取到的,都是默认的Object类型。 非常遗憾的告诉你,好像是不能的,泛型被消除了。所以很多的方法都需要传入 Class 的。 方法和类的都可以获取,类的应该获取无压力的(匿名类没试过)方法的泛型也能获取,但返回值public <T> List<T> get(){}这种就只能获取到T,入参能拿到具体对象,获取也是无压力的较高版本jdk应该都能获取的 新人提问, 关于jsp提取数据进行排序的问题 svn Hibernate查询表映射one to many时发生的异常,请教! 你们的大学里教struts等框架吗 EJB+struts部署到Oracle Application Server上的问题 服务器端生成excel文件 在客户端保存(POI) 快急死了,总提示*** is deprecated 求教javascript和session通讯的问题 hibernate 查询出的结果字段顺序出错 MVC controller 无法获取到js传递的对象参数? 关于 hibernate 双向一对多的数据保存 Spring第一天
ParameterizedType pt = (ParameterizedType)this.getClass().getGenericSuperclass();
(Class)pt.getActualTypeArguments()[0];
//delayedFindPackageName 代表包路径
Reflections reflections = new Reflections(delayedFindPackageName);
Set<Class<? extends Test>> monitorClasses = reflections.getSubTypesOf(Test.class);
for (Class<? extends Test> monitor : monitorClasses) {
monitorLists.add(ApplicationContext.getBean(monitor));
}
<groupId>org.reflections</groupId>
<artifactId>reflections-spring</artifactId>
<version>0.9.9-RC1</version>
</dependency>
所以很多的方法都需要传入 Class 的。
方法的泛型也能获取,但返回值public <T> List<T> get(){}这种就只能获取到T,入参能拿到具体对象,获取也是无压力的较高版本jdk应该都能获取的