小编rtn*_*rtn的帖子

重写方法上的Java Class.getMethods()行为

在Java中使用反射编写一个简单的JSON序列化程序时,我对Class.getMethods()的行为感到措手不及.如果重写方法的返回类型扩展了重写方法的返回类型,则Java Class.getMethods()似乎返回重写和重写方法.
所以例如给定接口:

static interface A {
  A x();
  A y();
}
static interface B extends A {
  B x();
  A y();
}
Run Code Online (Sandbox Code Playgroud)

A.class.getMethods()返回和预期的两个方法B.class.getMethods()的数组然而返回一个3个方法的数组(这对我来说有点反直觉).在3中,1对应于y()预期,但其余两个分别对应于x()具有返回类型的原始A版本和x()具有返回类型的覆盖版本B.这让我感到有些奇怪,x()因为它不能从任何地方访问数组中的原始数据.无论如何,我的问题是:
有没有简单的方法来获取一个类的方法的最专业版本的列表,而无需手动检查重写方法并过滤掉它们?

java reflection

6
推荐指数
1
解决办法
2603
查看次数

标签 统计

java ×1

reflection ×1