spublic Method[] getDeclaredMethods()
throws SecurityException返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何方法,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。类初始化方法 不包含在返回数组中。如果该类声明带有相同参数类型的多个公共成员方法,则它们都包含在返回的数组中。
下面一段代码在Sausage 写了两个方法,其中一个是重写了父类的getIngredient() 方法。Sausage.class.getDeclaredMethods()却返回了三个方法,包括两个getIngredient() 和他自己的showDescription()方法,请问这是为什么?为什么会拿到了父类的方法?
import java.util.*;
import java.lang.reflect.*;
class Food{
private Object ingredient;
public Object getIngredient(){ return ingredient; } public void showDescription(){ }
}
class Sausage extends Food{
private ArrayList ingredient;
public ArrayList getIngredient(){ return ingredient; } public void showDescription(){ System.out.println("I'm very delicious!"); }
}
class Test{
public static void main(String[] args) throws Exception{ Method[] ms = Sausage.class.getDeclaredMethods(); System.out.println(ms.length); }
}
千万里不及你
潇潇雨雨
相关分类