只是一个我无法想象的问题
Person per = new Person();
Class cla = per.getClass();
for(Method m : cla.getDeclaredMethods())
System.out.println(m);
例如我在我的类Person方法中排列如下:setName,setSecondName,getName,getSecondName,当我列出对象时,我的输出是getName,下面是setName,所以到最后一个方法。有人可以解释一下为什么这个方法不是列表,因为他们排在我的班级人员面前吗?谢谢
这是我的问题:
Person per = new Person();
Class cla = per.getClass();
for(Method m : cla.getDeclaredMethods())
{
System.out.println(m.getName());
if(m.getParameterCount() > 0){
Parameter [] pa = m.getParameters();
if(pa.length == 1){
if(m.getName().equals("setName") )
m.invoke(per , "John");
else if(m.getName().endsWith("setSecondName"))
m.invoke(per, "Cameron");
}
}
else
System.out.println(m.invoke(per));
}
实际输出:
的getName
空
的setName
setSecondName
getSecondName
卡梅伦
答案 0 :(得分:1)
看看JavaDoc:
public Method [] getDeclaredMethods() 抛出SecurityException
返回一个包含反映所有声明的Method对象的数组 此Class对象表示的类或接口的方法, 包括公共,受保护,默认(包)访问和私有 方法,但不包括继承的方法。
如果此Class对象表示具有多个声明的类型 具有相同名称和参数类型但返回不同的方法 类型,然后返回的数组有每个这样的Method对象 方法
如果此Class对象表示具有类初始化的类型 方法,然后返回的数组没有对应的 方法对象。
如果此Class对象表示没有声明的类或接口 方法,然后返回的数组的长度为0。
如果此Class对象表示数组类型,基本类型或 void,则返回的数组的长度为0。
返回数组中的元素未排序且不在任何元素中 特别订单。
答案 1 :(得分:0)
返回的数组中的元素没有排序,也没有任何特定的顺序。