今天第一次解除Java内省机制,虽然没有什么即为深入的了解,但经过初步的学习后我将Java内省机制初步理解为对于Java代码的一种规范化管理机制。
下面一个具体代码作为实例进行解释:
//javaBeans练习,
public class Person {
private String name;//字段(此时该字段还不能够称之为属性)
private int age;//字段(此时该字段还不能够称之为属性)
private String password;//字段(此时该字段还不能够称之为属性)
public String getA(){
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
上述代码中,Person这个类有着三个私有字段,name,age和password。有很多人都会说这三个玩意儿是属性,其实不然。一个字段只有在对它设了getXXX()或setXXX()方法之后才能够称之为属性,而像上述代码中的getA()方法,虽然并没有声明出其私有字段A,但A确实是Person的一个属性。
那么,像上述类中,到底有几个属性呢??是三个,四个,七个??都不是,其实在Person类中有五个属性,大家一定会奇怪了,Person类明明只有三个字段呀,就算按照我刚才说的只要有get或set方法的就是一个属性,那最多也就四个属性呀,我这第五个属性是从那里蹦出来的呢??
俗话说:事实是检验真理的唯一标准,让我们看一下测试后的结果吧!
看看,上面的运行结果是不是有五个属性?大家一定会莫名奇妙了,为什么会莫名其妙多出了一个class属性出来呢??其实,大家都忽略了一个很重要也很基础的知识点,Java中Object类是所有类的父类,所有类都继承了Object的方法和字段。在Object类中,有一个getClass的方法,刚才说了,只要有get方法的字段就是属性,那么class自然也是属性了。
所以说,在Person类中除了它自己的属性之外,还继承了它父亲的属性class,共有五个属性。