JAVA8 获取泛型类型问题
请教一个关于泛型的问题:
有如下带泛型的接口
public interface AAA<C,M,S> {}
public interface BBB<T extends Number> extends AAA<T,String,Boolean> {}
public interface CCC extends BBB<Integer> {}
public class DDD implements CCC {}
我想获取任意继承了AAA接口或实现了AAA接口的类型,对应AAA泛型参数中 C,M,S 分别对应什么实际类型。
例如:DDD中,C = Integer , M = String , S = Boolean
BBB 中,C = <T extends Number> , M = String , S = Boolean
有时这个类型是用在字段的前面,同时距离 AAA 有好几层继承关系,有没有什么好办法,可以方便地获知,最终的类型对应 AAA 的 参数 C,M,S 分别是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
除了 @_TNT_ 的答案,我花了点时间还找到了另外一个答案,原理应该是相同的。
TypeResolver GitHub 仓库
TypeTools Maven 仓库
除借助 IDE 的提示, 我也不知道还有什么好办法, 因为很多泛型只有在实例化时才能转为具体的类型. 如果你只是在写低层架构的话, 甚至可能不会与具体类弄打交道, 一直都是在写抽象类型也是可能的.
最开始的版本忘记了接口的情况…