Java的反射机制一
Java具有一定的动态性,我们可以利用反射机制,字节码操作来获得类似动态语言的特性。
动态操作对象,构造方法,属性,方法
Demo2
如何取得属性和方法以及构造器
public class Demo2
{
public static void main()
{
String path = “class.jeeleaning.servlet.User”;
Class clazz = Class.forName(path);
//获取属性
Field[] fields = clazz.getDeclaredFields();
Field f = clazz.getDeclaredField("uname);
//获取方法
Method[] methods = clazz.getDeclaredMethods();
Method m =clazz.getDeclaredMethod(“getUname”,对应参数的类对象 :null,或Strin.class);
//构造器
Constructor[] constructors = clazz.getConstructors();
Construct c1 = clazz.getConstructor(对应参数的类对象和获取方法类似);
Demo3
通过反射API动态操作,属性,方法,构造器
public class Demo3
{
public static void main(String[] args)
{
Class clazz = class.forName(path);
//通过反射API调用构造方法,构造对象;
User u1 = clazz.newInstance();//调用无参数的构造器
//注意javabean中运用反射机制时,都需要定义一个无参数的构造器
Construct c = clazz.getDeclaredConstruct(String.class,int.class)
c.newInstance(“linminhao”,2);
//通过API调用方法
Method method = clazz.getDeclaredMethod(“setName”,String.class);
method.invoke(u1,“高企三”);
//通过API调用属性
Field f= clazz.getDeclaredField(“uname”);
f.set(u1,“高企四”);
最新文章
- 【WPF系列】基础 PasswordBox
- [已解决][HTML5]基于WebSocket开发聊天室应用
- 《简明python教程》笔记二
- J-link烧写brjtag工具
- Backbone模型
- Java系列: 我的第一个spring aop练习
- Android 核心分析之十三Android GWES之Android窗口管理
- textarea中的文字自动换行问题
- 解读(GoogLeNet)Going deeper with convolutions
- Ranklib源码剖析--LambdaMart
- 2015-10-26 c#2
- ResNet网络再剖析
- Git学习(一)
- Mxonline3.6 在阿里云服务器上的部署(uwsgi nginx)
- chromedriver与chrome版本映射表(更新至v2.30)
- php的opcode缓存原理
- BZOJ5305 [Haoi2018]苹果树 【组合数学】
- POJ 3685 Matrix (二分套二分)
- java自带的MD5
- Oracle 事务操作
热门文章
- 链表中倒数第k个节点 双指针
- 删除win10系统下文件默认打开方式的关联-win10配置
- Apple Xcode 12.5 (12E262) 正式版发布 - 构建 Universal App
- 重新整理 .net core 实践篇—————3种配置验证[十四]
- 旷视MegEngine基本概念
- 特斯拉Tesla Model 3整体架构解析(上)
- jvm相关自我总结和 VisualVM工具的使用
- 重新整理 mysql 基础篇————— mysql 事务[三]
- mount 挂载操作
- Filebrowser 安装简介