getfields和getdeclaredfields
时间: 2023-04-28 14:03:42 浏览: 103
getFields和getDeclaredFields都是Java反射API中的方法,用于获取类的字段信息。
getFields方法返回的是类或接口中所有公共(public)字段的数组,包括从父类继承而来的字段。而getDeclaredFields方法返回的是类或接口中所有字段的数组,包括私有(private)字段,但不包括从父类继承而来的字段。
简单来说,getFields获取的是公共字段,getDeclaredFields获取的是所有字段。
相关问题
getdeclaredfields()用法
Java中的getDeclaredFields()方法用于获取类或接口的所有声明字段(包括私有字段)。这个方法返回的是一个Field对象数组。
语法:
```java
Field[] getDeclaredFields()
```
示例:
```java
class MyClass {
private int a;
public String b;
}
MyClass obj = new MyClass();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getName());
}
```
输出:
```
a
b
```
注意,这个方法只能获取到当前类中定义的字段,不能获取父类中的字段。如果需要获取父类中的字段,需要使用getFields()方法。
getClass().getDeclaredFields()
getClass().getDeclaredFields() 返回一个包含当前对象所属类的所有字段的数组。这些字段可以是私有的、受保护的、默认访问级别的或公共的。这个方法返回的字段数组不包括从父类继承的字段。如果你想获取包括父类继承的所有字段,可以使用 getClass().getFields() 方法。
这个方法返回的 Field 对象数组可以用于获取字段的名称、类型以及其他字段的属性。你可以使用 Field 类中定义的方法来访问和操作这些字段。
请注意,由于该方法返回的是当前对象所属类的字段,所以你需要在具体的对象上调用该方法,而不是在类上调用。例如,如果你有一个对象 obj,并且想获取它所属类的所有字段,可以使用 obj.getClass().getDeclaredFields()。
希望这个回答能够解决你的问题!如果你还有其他问题,可以继续提问。