《Java》反射全解
2016-04-12 01:01
621 查看
反射加载
反射加载有三种方法1.Class clazz= Class.forName(包名.类名); (提示:使用此方法会运行相关类里面的static代码块)
2.Class clazz = 类名.class
3.Class clazz = new 类名().getClass();
反射得到构造方法创建实例
public class Person{ public Person(){ System.out.println("无参"); } public Person(String name){ System.out.println("有参"+name); } private Person(int age){ System.out.println("有参私有"+age); } }
得到构造方法
Class clazz = Person.class Constructor c = clazz.getConstructor(null);//得到无参 Constructor c1 = clazz.getConstructor(String.class);//得到有参 Person p = (Person)c.newInstance(null);//得到person对象 Person p1 = (Person)c.newInstance("");//得到person对象 //得到私有构造方法创建实例 Constructor c2 = getDeclaredConstructor(int.class); c2.setAccessible(true);//设置:私有可反射(容易的) Person p2 = (Person)c.newInstance(1);//得到person对象
反射得到方法并运行
public class Person{ public Person(){ } public void test(){ } private void test(String name){ System.out.println("私有方法"+name); } }
Person p = new Person(); Class clazz = Person.class Method m = clazz.getMethod("test",null);//得到无参方法 m.invoke(p,null);//调用方法 //得到私有方法 Method m1 = clazz.getDeclaredMethod("test",String.class); m1.setAccessible(true);//设置:私有可反射(容易的) m1.invoke(p,"haha");
反射得到字段
都是一个样,这里就不表述了.相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树