网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

getDeclaredField()方法以及NoSuchFieldException异常处理

getDeclaredField()方法以及NoSuchFieldException异常处理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联公司专注于本溪网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供本溪营销型网站建设,本溪网站制作、本溪网页设计、本溪网站官网定制、小程序开发服务,打造本溪网络公司原创品牌,更为您提供本溪网站排名全网营销落地服务。

使用getDeclaredField()方法,发现有异常NoSuchFieldException,后续发现是因为实体类使用了extends引起的,就百度了下原因。

发现getDeclaredField()方法只能获取当前类的所有属性,但是不能获取父类的属性

getDeclaredField()方法以及NoSuchFieldException异常处理

这里引出两个问题,第一个问题:getField()和getDeclaredField()方法是做什么的:

用Class的getField(String name)或getDelaredField(String name)是用来得到目标类的指定属性,返回类型是Field。

第二个问题:getField()和getDeclaredField()方法有什么区别:

getField(String name)只能获取public的字段,包括父类的;

而getDeclaredField(String name)只能获取自己声明的各种字段,包括public,protected,private。

那么解决我遇到的问题有几种方法:

方法1:弃用extends,但是我如果还想继续使用extends怎么办呢,看方法2。

方法2:可以通过getSuperclass()方法获取父类,再调用getDeclaredField()方法。

Field field;
try {
   field = obj.getClass().getDeclaredField(fieldName);
} catch (NoSuchFieldException e) {
   //此处用于解决继承导致的getDeclaredField不能直接获取父类属性的问题
   field = obj.getClass().getSuperclass().getDeclaredField(fieldName);
}

关于getDeclaredField()方法以及NoSuchFieldException异常处理问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享题目:getDeclaredField()方法以及NoSuchFieldException异常处理
分享路径:http://bjjierui.cn/article/pcjscs.html

其他资讯