选择当前类的方法而不是继承的类

时间:2011-05-25 09:43:58

标签: java reflection

假设我有这些类:

class A{
  void f();
}

class B extends A{
  void g();
}

当我这样做时,我会得到什么:

Class.forename("B").getMethods();

我会获得方法fg ????

如果是,那么如何获取当前类的方法而不是它的父类(在本例中为方法g())????

谢谢前额!

2 个答案:

答案 0 :(得分:8)

使用Class.getDeclaredMethods代替getMethods。

  

这个(getDeclaredMethods返回的方法)包括publicprotected,   default(包)访问权限,以及   private方法,但不包括在内   继承的方法。

答案 1 :(得分:0)

使用getDeclaredMethods()api。

来自java api reference -

  

返回一个Method对象数组,这些对象反映由此Class对象表示的类或接口声明的所有方法。这包括公共,受保护,默认(包)访问和私有方法,但不包括继承的方法。