大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
1.作用域
PropertyDescriptor中文叫属性描述器,是jiava JavaBean的内省与BeanUtils库
JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object),或“VO”。方法比较少。这些信息储存在类的私有变量中,通过set()、get()获得。
Java JDK中提供了一套API用来访问某个属性的getter/setter方法,这就是内省。
JAVA反射机制中操作或者获取私有属性(必须有get/set方法)的《java JavaBean》类,也就是我们常说的VO类,例如:
public class TestClass{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
2. PropertyDescriptor JDK内省类库:
PropertyDescriptor类:(属性描述器)
PropertyDescriptor类表示JavaBean类通过存储器导出一个属性。主要方法:
1. getPropertyType(),获得属性的Class对象;
2. getReadMethod(),获得用于读取属性值的方法;
3. getWriteMethod(),获得用于写入属性值的方法;
4. hashCode(),获取对象的哈希值;
5. setReadMethod(Method readMethod),设置用于读取属性值的方法;
6. setWriteMethod(Method writeMethod),设置用于写入属性值的方法。
3. 其他和PropertyDescriptor 相关的类或者工具包
1. Introspector类: 将JavaBean中的属性封装起来进行操作 得到 BeanInfo
2. BeanInfo操作PropertyDescriptor
3. BeanUtils包
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
4.使用方法
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
/**
* @author zeng
* @since 2022/6/21
*/
public class MainApp {
public static void main(String[] args) throws IntrospectionException {
final PropertyDescriptor descriptor = new PropertyDescriptor("name",TestClass.class);
final Class<?> type = descriptor.getPropertyType(); //获取属性的class对象
System.out.println(type.getTypeName());// java.lang.String
final Method readMethod = descriptor.getReadMethod();//获得用于读取属性值的方法;
System.out.println(readMethod.getName());// getName
final Method witeMethod = descriptor.getWriteMethod();//获得用于写入属性值的方法;
System.out.println(witeMethod.getName());// setName
// 设置读写方法就不过多介绍了,太麻烦,如果不会需要使用请@我
}
class TestClass{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188280.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...