我使用过:
System.out.println(Person.class.getDeclaredMethods().length);
在这里获取此类的方法数量:
class Person {
private String name;
Person(String newName) {
name = newName;
}
public String getName() {
return name;
}
public void setName(String val) {
name = val;
}
}
我为这个类计算了三种方法,但getDeclaredMethods().length
只计算两种方法。我错过了什么?
答案 0 :(得分:5)
Person(String newName) {
name = newName;
}
这是类的构造函数,而不是方法。
要了解方法和构造函数之间的区别,请阅读以下文章:http://www.javaworld.com/article/2076204/core-java/understanding-constructors.html
答案 1 :(得分:5)
该类声明(按从上到下的顺序):
一个字段:name
。 (您可以使用getDeclaredFields
获取有关已声明字段的信息,但我不认为您正在寻找这些信息。
一个构造函数:Person(String)
。构造函数不是方法,而是构造函数。如果您想知道有多少个声明的构造函数,请使用getDeclaredConstructors
。
两种方法:getName
和setName
。你已经知道如何获得它们了。
有更多方法,因为它继承了Object
(toString
,hashCode
,equals
等方法。 ,但那些是声明的。