• 欢迎访问开享网

Class类的getFields和getDeclaredFields的区别

java 4个月前 (10-29) 124次浏览 已收录 0个评论 扫描二维码

getFields方法

返回类提供的public域,包括超类的public成员。

getDeclaredFields方法

返回类中声明的全部域,包括私有和受保护的成员,不包括超类的成员。


代码示例:

  1. 创建一个父类
public class Parent {
    public String name;
    private String age;
}
  1. 创建一个子类
public class Child extends Parent {
    public String email;
    private String address;
}
  1. 输出Child的成员
System.out.println("getFields结果:");
Class cs= Child.class;
for(Field field:cs.getFields()){
    System.out.println(field.getName());
}
System.out.println("getDeclaredFields结果:");
for(Field field:cs.getDeclaredFields()){
    System.out.println(field.getName());
}

输出:

getFields结果:
email
name
getDeclaredFields结果:
email
address

如果想要获取所有的成员,包括私有、保护成员和超类的成员,可以使用递归方式:

while (cs!=null){
    for(Field field:cs.getDeclaredFields()){
        System.out.println(field.getName());
    }
    cs=cs.getSuperclass();
}

输出:

email
address
name
age

getMethods、getConstructors和getDeclareMethods、getDeclaredConstructors在获取方法和构造器时也是类似方式。


开享网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Class类的getFields和getDeclaredFields的区别
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址