JAVA 类中的成员变量Fields和属性Properties区别

本文详细介绍了Java中类的成员变量Fields和属性Properties的区别。成员变量是类的内部字段,而属性通常指的是带有getter和setter的方法。通过反射API可以分别获取类的成员变量和属性,如使用`getDeclaredFields()`获取成员变量,`getPropertyDescriptors()`获取属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、类的成员变量Fields和属性Properties 
Java学习中一直以为成员变量与属性是一样的,但后面使用IDEA等工具时发现有区别,下面创建一个类Person区分一下:

在这里插入图片描述
 
1. 成员变量Fields:
就是定义的字段name、age、gender(没有get/set)


  
  1. private String name;
  2. private int age;
  3. private String gender;

2. 属性Properties:常见properties应该是在xxx.properties作为配置文件,属性Properties是有get/set的,或者说是成员变量的getter/setter,用来设置/获取这个类的属性。

属性properties的官方定义:属性是指get或者set方法名,去掉get或者set后,把剩余的部分首字母改为小写后,即为这个类的属性。

上图中没有height成员变量,但getHeight()是一个getter,因此getHeight()也是属性。

参考文章:

https://blog.youkuaiyun.com/peng19870724/article/details/105551255

https://blog.youkuaiyun.com/sinat_34137390/article/details/82149259

https://blog.youkuaiyun.com/DeeJinG/article/details/105999214

https://blog.youkuaiyun.com/JavaEETeacher/article/details/4311673

二、由于成员变量和属性的不同,那么我们应该如何获取类的成员变量和属性?

1、获取某个类的成员变量,不包括父类的字段


  
  1. Field[] fields = User.class.getDeclaredFields();
  2. for ( int i = 0; i < fields.length; i++) {
  3. System.out.println(fields[i].getName());
  4. }

2、获取某个类的属性


  
  1. PropertyDescriptor[] propertyDescriptors = BeanUtils.getPropertyDescriptors(User.class);
  2. for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
  3. System.out.println(propertyDescriptor.getName());
  4. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值