Class类的getDeclaredFields()与getFields()方法的区别?

  • getDeclaredFields(): 获取所有本类自己声明的属性, 不能获取父类和实现的接口中的属性
  • getFields(): 只能获取所有 public 声明的属性, 包括获取父类和实现的接口中的属性

 

测试代码:

package constxiong.interview;

import java.lang.reflect.Field;

/**
 * 测试通过 Class 获取字段
 * @author ConstXiong
 */
public class TestGetFields 
		extends TestGetFieldsSub implements TestGetFieldsInterface{
	private String privateFieldSelf;
	protected String protectedFieldSelf;
	String defaultFieldSelf;
	public String publicFieldSelf;
	
	
	public static void main(String[] args) {
		System.out.println("--------  getFields  --------");
		for (Field field : TestGetFields.class.getFields()) {
			System.out.println(field.getName());
		}
		
		System.out.println("--------  getDeclaredFields  --------");
		for (Field field : TestGetFields.class.getDeclaredFields()) {
			System.out.println(field.getName());
		}
	}
}

class TestGetFieldsSub {
	private String privateField;
	protected String protectedField;
	String defaultField;
	public String publicField;
}

interface TestGetFieldsInterface {
	String interfaceField = "";
}

 

打印:

--------  getFields  --------
publicFieldSelf
interfaceField
publicField
--------  getDeclaredFields  --------
privateFieldSelf
protectedFieldSelf
defaultFieldSelf
publicFieldSelf

 

给TA打赏
共{{data.count}}人
人已打赏
Java

十进制100转换成八进制是多少?

2020-7-23 20:46:36

Java

final修饰变量,是引用不能变?还是引用的对象不能变?

2020-7-23 20:47:40

本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策。若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
⚠️
本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策
若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索