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,“高企四”);

最新文章

  1. 【WPF系列】基础 PasswordBox
  2. [已解决][HTML5]基于WebSocket开发聊天室应用
  3. 《简明python教程》笔记二
  4. J-link烧写brjtag工具
  5. Backbone模型
  6. Java系列: 我的第一个spring aop练习
  7. Android 核心分析之十三Android GWES之Android窗口管理
  8. textarea中的文字自动换行问题
  9. 解读(GoogLeNet)Going deeper with convolutions
  10. Ranklib源码剖析--LambdaMart
  11. 2015-10-26 c#2
  12. ResNet网络再剖析
  13. Git学习(一)
  14. Mxonline3.6 在阿里云服务器上的部署(uwsgi nginx)
  15. chromedriver与chrome版本映射表(更新至v2.30)
  16. php的opcode缓存原理
  17. BZOJ5305 [Haoi2018]苹果树 【组合数学】
  18. POJ 3685 Matrix (二分套二分)
  19. java自带的MD5
  20. Oracle 事务操作

热门文章

  1. 链表中倒数第k个节点 双指针
  2. 删除win10系统下文件默认打开方式的关联-win10配置
  3. Apple Xcode 12.5 (12E262) 正式版发布 - 构建 Universal App
  4. 重新整理 .net core 实践篇—————3种配置验证[十四]
  5. 旷视MegEngine基本概念
  6. 特斯拉Tesla Model 3整体架构解析(上)
  7. jvm相关自我总结和 VisualVM工具的使用
  8. 重新整理 mysql 基础篇————— mysql 事务[三]
  9. mount 挂载操作
  10. Filebrowser 安装简介