java的set和get方法实例化_java反射机制 调用get set 方法 | 学步园
调用get set 方法,需要 某一个类 类中的字段 字段的值来实现
代码:
package entity;
import java.lang.reflect.Method;
import java.lang.reflect.Field;
import java.beans.PropertyDescriptor;
import com.wzty.platform.domain.model.SiteRule;
public class PropertyUtil {
public static PropertyDescriptor getPropertyDescriptor(Class clazz,
String propertyName) {
StringBuffer sb = new StringBuffer(); // 构建一个可变字符串用来构建方法名称
Method setMethod = null;
Method getMethod = null;
PropertyDescriptor pd = null;
try {
Field f = clazz.getDeclaredField(propertyName); // 根据字段名来获取字段
if (f != null) {
// 构建方法的后缀
String methodEnd = propertyName.substring(0, 1).toUpperCase()
+ propertyName.substring(1);
sb.append("set" + methodEnd); // 构建set方法
setMethod = clazz.getDeclaredMethod(sb.toString(),
new Class[] { f.getType() });
sb.delete(0, sb.length()); // 清空整个可变字符串
sb.append("get" + methodEnd); // 构建get方法
// 构建get 方法
getMethod = clazz.getDeclaredMethod(sb.toString(),
new Class[] {});
// 构建一个属性描述器 把对应属性 propertyName 的 get 和 set 方法保存到属性描述器中
pd = new PropertyDescriptor(propertyName, getMethod, setMethod);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return pd;
}
public static void setProperty(Object obj, String propertyName, Object value) {
Class clazz = obj.getClass();// 获取对象的类型
PropertyDescriptor pd = getPropertyDescriptor(clazz, propertyName);
Method setMethod = pd.getWriteMethod();// 从属性描述器中获取 set 方法
try {
setMethod.invoke(obj, new Object[] { value });// 调用 set
// 方法将传入的value值保存属性中去
} catch (Exception e) {
e.printStackTrace();
}
}
public static Object getProperty(Object obj, String propertyName) {
Class clazz = obj.getClass();// 获取对象的类型
PropertyDescriptor pd = getPropertyDescriptor(clazz, propertyName);
Method getMethod = pd.getReadMethod();// 从属性描述器中获取 get 方法
Object value = null;
try {
value = getMethod.invoke(clazz, new Object[] {});// 调用方法获取方法的返回值
} catch (Exception e) {
e.printStackTrace();
}
return value;// 返回值
}
public static void main(String args[]){
String field ="author";
String value="hello";
SiteRule st = new SiteRule();
PropertyUtil.setProperty(st, field, value);
System.out.println(st.getAuthor());
}
}
代码中使用的类介绍:
Method类:Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。
此类被final 修饰,不能继承,继承和实现了AccessibleObject 和 GenericDeclaration Member.
根据此类可以:invoke 方法 调用该方法。
Field类:是类上面的(对于类属性和普通属性,下面的是一样的),使用get 方法得到本属性的值(对于某一个实例对象或者类对象),注意根据getDeclaredField得到的Field, 对于私有属性 不能直接使用get方法,必须 先 setAccessible()才能使用get访问值,public等其他的可以使用。
使用Field 对象赋值:set(对象,值)
功能:得到对象在此字段上的值等。
PropertyDescriptor类:PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性
class类: class 常用方法: getDeclaredField("") 可以得到单一属性 任何权限都可以,得不到父类的属性(就是本类代码中编写的东西)
getField(“”)只能是公有的。可以得到父类的属性(就是本类含有的属性)
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
使用class 创建对象, c。newInstance() 这是必须调用无参构造方法。调用其他构造方法使用:
a) 通过Class类中的getConstructors()取得本类中的全部构造方法。
b) 向构造方法中传递一个对象数组进去,里面包含了构造方法中所需的各个参数。
c) 之后通过Constructor实例化对象
功能:可以强制类型转化为子类,得到类中的注释,得到类加载器,得到类中所有的成员的类,
得到类中的方法,得到所有的属性,得到方法等。
Constructor类:构造方法类
Modifier类:修饰符的类
根据class 取得对应的方法:getMethod("方法名")
如何取得带有参数的方法:getMethod("方法名",参数类型.class,.....);
java的set和get方法实例化_java反射机制 调用get set 方法 | 学步园相关推荐
- android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...
想要在应用中进行截屏,可以直接调用 View 的 getDrawingCache 方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了. 还有一个方法可以调用系统隐藏的 screen ...
- java通过属性名获取属性值_java反射机制根据属性名获取属性值的操作
java反射机制根据属性名获取属性值的操作,属性,对象,反射,访问权限,还可以 java反射机制根据属性名获取属性值的操作 易采站长站,站长之家为您整理了java反射机制根据属性名获取属性值的操作的相 ...
- 利用Java反射机制调用含数组参数的方法
http://yourmitra.wordpress.com/2008/09/26/using-java-reflection-to-invoke-a-method-with-array-parame ...
- java反射机制知识_Java反射机制讲解,程序员必须掌握的知识点
关注程序员7歌,一起用技术改变世界 大家好,我是程序员7歌,今天我为大家讲解Java的反射机制. 首先我们来看看反射的概念: Java反射说的就是在程序运行中,任何一个类,我们都可以知道这个类的方法和 ...
- java反射机制详解_Java反射机制详解
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反 ...
- Java编程:Java的反射机制中的 getComponentType() 方法
转载自 Java编程:Java的反射机制中的 getComponentType() 方法 Java 中所有的类都继承自 Object,数组本身也是一个 Class,如果我们能够得到数据的 Class ...
- 利用Java反射机制调用类的私有方法
利用Java反射机制调用类的私有方法 引言 来吧·展示 参考链接 引言 如何调用其他类的私有方法呢? 可以利用Java的反射机制,去调用其他类的私有方法 来吧·展示 package cn.learn. ...
- java反射机制调用带参数的方法_Java反射机制:跟着代码学反射
1. 前言 在OOP的世界里,万物皆对象.也就是说,我们可以将任何东西抽象成一个对象. 比如人,可以抽象成一个Person类,通过new Person()来实例化一个对象:再比如鸭子,可以抽象成一个D ...
- Java私有方法解释_java接口中 定义 private 私有方法
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...
最新文章
- 腾讯3366小游戏站算法被破解
- C++中map容器的说明和使用技巧
- parted新建分区_扩展分区及文件系统(Linux)
- word文档查重_「毕业之家」揭秘:大学生知网论文查重的规则及查重原理
- s7.net 写数据到plc_西门子1200复位PLC、欧姆龙常见问题解答
- MapReduce过程详解及其性能优化
- (2)散列表是怎么进行查找的
- java邮件附件名称乱码_Javamail 中附件中文名字乱码祥解 (转)
- form表单input使用disabled后提交不能获取表单值的解决方法
- python什么是调用_Python中包(package)的调用方式
- label包裹input,点击label响应两次解决方法
- Java计算的XML面试题
- Nginx源码分析 - Event事件篇 - Event模块和配置的初始化(16)
- linux怎样重启命令,Linux重启命令介绍
- HTML 制作一个通讯录
- smss lsass http://laji.xrlyy.com病毒解决办法
- 计算机网络的基础知识
- 树的中序遍历+前序遍历得到后序遍历
- 第三方微信+支付宝个人免签支付源码
- 基于Vue实现的网页音乐播放器
热门文章
- java集合的方法及使用详解
- 对话框--popdialog总结
- uoj #111. 【APIO2015】Jakarta Skyscrapers
- Java三大器之过滤器(Filter)的工作原理和代码演示
- 进度管理工具 planner
- 535 5.7.8 Error: authentication failed: generic failure安装EMOS时SMTP测试报错
- COOKIE和Session的原理及异同
- NetScaler配置只允许某个组访问桌面
- [HDU 2096] 小明A+B
- JavaScript 代码的加入