getFields()与getDeclaredFields()区别
getFields()只能访问类中声明为公有的字段,私有的字段它无法访问.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关
getMethods()与getDeclaredMethods()区别
getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法
getConstructors()与getDeclaredConstructors()区别
getConstructors()只能访问类中声明为public的构造函数.getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关
我就不细说了
代码面前:了无秘密!
package com.zyj.weixin.auth.model;
/**
*首先定义一个People对象
*/
package com.zyj.weixin.auth.model;
public class People {
private long id;
private String userName;
private String password;
public String gender;
protected String realName;
//把id的getId和setId改为private测试
private long getId() {
return id;
}
private void setId(long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
}
/**
*定义一个Address 对象
*/
package com.zyj.weixin.auth.model;
public class Address {
private long id;
public String adress;
private long userid;//对应people的ID
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public long getUserid() {
return userid;
}
public void setUserid(long userid) {
this.userid = userid;
}
}
/**
*定义一个Developer
*/
package com.zyj.weixin.auth.model;
public class Developer extends People {
private String phone;
public String nickName;
protected double balance;
private Address address;
public Address address2;
public Address getAddress() {
return address;
}
@Override
public String getUserName() {
// TODO Auto-generated method stub
return super.getUserName();
}
@Override
public void setUserName(String userName) {
// TODO Auto-generated method stub
super.setUserName(userName);
}
public void setAddress(Address address) {
this.address = address;
}
public Address getAddress2() {
return address2;
}
public void setAddress2(Address address2) {
this.address2 = address2;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
最后我们来测试一下
package com.zyj.weixin.auth.model;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class test {
public static void main(String[] args) {
//第一个测试类
Class class1 = People.class;
Field [] fed= class1.getFields();
for(int i=0;i<fed.length;i++){
System.out.println("第一个测试类,获取到第"+i+ "个:" +fed[i].getName());
}
System.out.println("|-------------这是美丽的分割线----------------|");
//第二个测试类
Field [] fed2= class1.getDeclaredFields();
for(int i=0;i<fed2.length;i++){
System.out.println("第二个测试类,获取到第"+i+ "个:" +fed2[i].getName());
}
System.out.println("|-------------这是美丽的分割线----------------|");
//第三个测试类
Class class2 = Developer.class;
Field [] fed3= class2.getFields();
for(int i=0;i<fed3.length;i++){
System.out.println("第三个测试类,获取到第"+i+ "个:" +fed3[i].getName());
}
System.out.println("|-------------这是美丽的分割线----------------|");
//第四个测试类
Field [] fed4= class2.getDeclaredFields();
for(int i=0;i<fed4.length;i++){
System.out.println("第四个测试类,获取到第"+i+ "个:" +fed4[i].getName());
}
System.out.println("|-------------这是第二种美丽的分割线----------------|");
Method [] method1= class1.getMethods();
for(int i=0;i<method1.length;i++){
System.out.println("第一个方法,获取到第"+i+ "个:" +method1[i].getName());
}
System.out.println("|-------------这是第二种美丽的分割线----------------|");
Method [] method2= class1.getDeclaredMethods();
for(int i=0;i<method2.length;i++){
System.out.println("第二个方法,获取到第"+i+ "个:" +method2[i].getName());
}
System.out.println("|-------------这是第二种美丽的分割线----------------|");
Method [] method3= class2.getMethods();
for(int i=0;i<method3.length;i++){
System.out.println("第三个方法,获取到第"+i+ "个:" +method3[i].getName());
}
System.out.println("|-------------这是第二种美丽的分割线----------------|");
Method [] method4= class2.getDeclaredMethods();
for(int i=0;i<method4.length;i++){
System.out.println("第四个方法,获取到第"+i+ "个:" +method4[i].getName());
}
}
}
测试结果如下
第一个测试类,获取到第0个:gender
|-------------这是美丽的分割线----------------|
第二个测试类,获取到第0个:id
第二个测试类,获取到第1个:userName
第二个测试类,获取到第2个:password
第二个测试类,获取到第3个:gender
第二个测试类,获取到第4个:realName
|-------------这是美丽的分割线----------------|
第三个测试类,获取到第0个:nickName
第三个测试类,获取到第1个:address2
第三个测试类,获取到第2个:gender
|-------------这是美丽的分割线----------------|
第四个测试类,获取到第0个:phone
第四个测试类,获取到第1个:nickName
第四个测试类,获取到第2个:balance
第四个测试类,获取到第3个:address
第四个测试类,获取到第4个:address2
|-------------这是第二种美丽的分割线----------------|
第一个方法,获取到第0个:setRealName
第一个方法,获取到第1个:setUserName
第一个方法,获取到第2个:getPassword
第一个方法,获取到第3个:getGender
第一个方法,获取到第4个:setGender
第一个方法,获取到第5个:getRealName
第一个方法,获取到第6个:getUserName
第一个方法,获取到第7个:setPassword
第一个方法,获取到第8个:wait
第一个方法,获取到第9个:wait
第一个方法,获取到第10个:wait
第一个方法,获取到第11个:equals
第一个方法,获取到第12个:toString
第一个方法,获取到第13个:hashCode
第一个方法,获取到第14个:getClass
第一个方法,获取到第15个:notify
第一个方法,获取到第16个:notifyAll
|-------------这是第二种美丽的分割线----------------|
第二个方法,获取到第0个:getId
第二个方法,获取到第1个:setRealName
第二个方法,获取到第2个:setUserName
第二个方法,获取到第3个:setId
第二个方法,获取到第4个:getPassword
第二个方法,获取到第5个:getGender
第二个方法,获取到第6个:setGender
第二个方法,获取到第7个:getRealName
第二个方法,获取到第8个:getUserName
第二个方法,获取到第9个:setPassword
|-------------这是第二种美丽的分割线----------------|
第三个方法,获取到第0个:getAddress
第三个方法,获取到第1个:setUserName
第三个方法,获取到第2个:getUserName
第三个方法,获取到第3个:setAddress
第三个方法,获取到第4个:getAddress2
第三个方法,获取到第5个:setAddress2
第三个方法,获取到第6个:getPhone
第三个方法,获取到第7个:setPhone
第三个方法,获取到第8个:getNickName
第三个方法,获取到第9个:setNickName
第三个方法,获取到第10个:getBalance
第三个方法,获取到第11个:setBalance
第三个方法,获取到第12个:setRealName
第三个方法,获取到第13个:getPassword
第三个方法,获取到第14个:getGender
第三个方法,获取到第15个:setGender
第三个方法,获取到第16个:getRealName
第三个方法,获取到第17个:setPassword
第三个方法,获取到第18个:wait
第三个方法,获取到第19个:wait
第三个方法,获取到第20个:wait
第三个方法,获取到第21个:equals
第三个方法,获取到第22个:toString
第三个方法,获取到第23个:hashCode
第三个方法,获取到第24个:getClass
第三个方法,获取到第25个:notify
第三个方法,获取到第26个:notifyAll
|-------------这是第二种美丽的分割线----------------|
第四个方法,获取到第0个:getAddress
第四个方法,获取到第1个:setUserName
第四个方法,获取到第2个:getUserName
第四个方法,获取到第3个:setAddress
第四个方法,获取到第4个:getAddress2
第四个方法,获取到第5个:setAddress2
第四个方法,获取到第6个:getPhone
第四个方法,获取到第7个:setPhone
第四个方法,获取到第8个:getNickName
第四个方法,获取到第9个:setNickName
第四个方法,获取到第10个:getBalance
第四个方法,获取到第11个:setBalance
网友评论