Class.getFields和Class.getDeclaredFields区别
getFields返回的是某个类里的所有public类型的变量,包括继承父类的
getDeclaredFields返回的是某个类里的所有类型的变量,不包括继承父类的
如:
Java代码
public class Parenet {
public String parent1;
protected String parent2;
private String parent3;
}
public class Parenet {
public String parent1;
protected String parent2;
private String parent3;
}
Java代码
public class Child extends Parenet{
public String child1;
@SuppressWarnings("unused")
private String child2;
protected String child3;
}
public class Child extends Parenet{
public String child1;
@SuppressWarnings("unused")
private String child2;
protected String child3;
}
Java代码
public class Test {
public static void main(String[] args){
Child child = new Child();
//getFields返回的是某个类里的所有public类型的变量,包括继承父类的
Field[] fields1 = child.getClass().getFields();
for(Field field :fields1){
System.out.println("getFields:"+field.getName());
}
//getDeclaredFields返回的是某个类里的所有类型的变量,不包括继承父类的
Field[] fields2 = child.getClass().getDeclaredFields();
for(Field field :fields2){
System.out.println("getDeclaredFields:"+field.getName());
}
}
}
public class Test {
public static void main(String[] args){
Child child = new Child();
//getFields返回的是某个类里的所有public类型的变量,包括继承父类的
Field[] fields1 = child.getClass().getFields();
for(Field field :fields1){
System.out.println("getFields:"+field.getName());
}
//getDeclaredFields返回的是某个类里的所有类型的变量,不包括继承父类的
Field[] fields2 = child.getClass().getDeclaredFields();
for(Field field :fields2){
System.out.println("getDeclaredFields:"+field.getName());
}
}
}
输出结果为:
getFields:child1
getFields:parent1
getDeclaredFields:child1
getDeclaredFields:child2
getDeclaredFields:child3
getFields返回的是某个类里的所有public类型的变量,包括继承父类的
getDeclaredFields返回的是某个类里的所有类型的变量,不包括继承父类的
如:
Java代码
public class Parenet {
public String parent1;
protected String parent2;
private String parent3;
}
public class Parenet {
public String parent1;
protected String parent2;
private String parent3;
}
Java代码
public class Child extends Parenet{
public String child1;
@SuppressWarnings("unused")
private String child2;
protected String child3;
}
public class Child extends Parenet{
public String child1;
@SuppressWarnings("unused")
private String child2;
protected String child3;
}
Java代码
public class Test {
public static void main(String[] args){
Child child = new Child();
//getFields返回的是某个类里的所有public类型的变量,包括继承父类的
Field[] fields1 = child.getClass().getFields();
for(Field field :fields1){
System.out.println("getFields:"+field.getName());
}
//getDeclaredFields返回的是某个类里的所有类型的变量,不包括继承父类的
Field[] fields2 = child.getClass().getDeclaredFields();
for(Field field :fields2){
System.out.println("getDeclaredFields:"+field.getName());
}
}
}
public class Test {
public static void main(String[] args){
Child child = new Child();
//getFields返回的是某个类里的所有public类型的变量,包括继承父类的
Field[] fields1 = child.getClass().getFields();
for(Field field :fields1){
System.out.println("getFields:"+field.getName());
}
//getDeclaredFields返回的是某个类里的所有类型的变量,不包括继承父类的
Field[] fields2 = child.getClass().getDeclaredFields();
for(Field field :fields2){
System.out.println("getDeclaredFields:"+field.getName());
}
}
}
输出结果为:
getFields:child1
getFields:parent1
getDeclaredFields:child1
getDeclaredFields:child2
getDeclaredFields:child3