反射(类!我叫你,你敢答应吗)
来源:互联网 发布:cnc编程培训多少钱 编辑:程序博客网 时间:2024/04/29 15:26
定义一个标准的JavaBean,名叫Person,包含属性name、age。使用反射的方式创建一个实例、调用构造函数初始化name、age,使用反射方式调用setName方法对名称进行设置,不使用setAge方法直接使用反射方式对age赋值。
public class Person { String name; int age; public Person(String name,int age) { this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "name:"+name+'\t'+"age:"+age; }}
import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;@SuppressWarnings("all")public class SetPerson { private String clazzName; private Class clazz; private Object obj; //获得该类的class对象,并创建对象 private void set(String className) throws Exception{ this.clazz=Class.forName(className); //获得该类的class对象 Constructor con= clazz.getConstructor(String.class,int.class); //获得类的构造器 obj= con.newInstance("张三",20); //创建实例 } //设置年龄 private void setAge(int age) throws Exception{ Field f= clazz.getDeclaredField("age"); //获得类属性 f.setAccessible(true);//就是这么霸道 f.set(obj, age); } //调用方法 private void invoke(String name) throws Exception{ Method m = clazz.getDeclaredMethod("setName",String.class); m.invoke(obj, name); } //来秀秀 public void show(String className,int age,String name){ try { set(className); System.out.println(obj); setAge(age); System.out.println(obj); invoke(name); System.out.println(obj); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } //嗯 你才是老大 大哥你好 public static void main(String[] args) { SetPerson setp=new SetPerson(); setp.show("com.refect.text.Person", 19, "汪皓"); }}
0 0
- 反射(类!我叫你,你敢答应吗)
- 如果我很爱你你会答应我吗
- 威锋十年:叫一声「果粉」,你还敢答应吗?
- 总统巴黎公开呛普京:我敢辞职你敢吗?
- 你敢来,我敢“惠”
- 私奔!你敢吗?
- 全力以赴,你敢吗
- 什么叫“精通”?谁敢自称“精通”?“精通”XX的人你雇的起吗?
- 你敢天长,我就敢地久
- 我敢在你怀里孤单 - 笔记
- 技术人员创业,你敢吗?
- SEO,你敢说你会吗?
- 喜欢你这样叫我~
- 你敢说你热爱编程,你热爱学习吗?
- 你答应我今天飞来带着你迟来的真爱
- 【原创】向黑客挑衅,你敢吗?
- 你敢面对这样的现实吗?
- 你敢跟老板说“不”吗?
- fans-rt 进程间通讯(IPC)-同步对象测试用例库
- 反射(揭起你的盖头来)
- F - The Pool for Lucky Ones -暴力
- 单片机基础:keil中data,idata,xdata,pdata,code区别
- B - Lunch-Gym 100637B-找规律过的
- 反射(类!我叫你,你敢答应吗)
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十章 对象初始化
- netty 学习 (1)
- 面向对象特点以及java的表现形式
- 手写小时间控件
- netty 学习 (2)Handler的执行顺序
- netty 学习 (3)发送对象
- netty 学习 (4)混合使用coder和handler
- 黑马程序员 日记(四)