java反射基础知识汇总
2016-07-13 11:03
453 查看
1. 获取Class的三种方式:
1. Class.forName方式Class pClass = Class.forName("java.util.List");
2. 使用对象的getClass()方法
Class class = p.getClass();
3. 使用类的class属性
Class class = Person.class;
4. ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass("com.wzz.Code");
2. 获取类的属性:
1. 获取类的属性1. getDeclaredFields方法:获取所有申明的属性
Field[] field = pClass.getDeclaredFields();
Field field = pClass.getDeclaredFields("属性名");
2. getField方法,获取所有public属性
Field[] field = pClass.getField();
2. 获取属性的类型
1. 获取Type
String type = field.getType().toString(); //class java.lang.String
if(type.endWith("String")){};//。。。
3. 修改对象的属性值
1. 修改对象的属性值
Field f2 = pClass.getDeclaredField("name");
f2.setAccessible(true);//如果是private类型等的要设置可见再践行
f2.set(p, "jack");//p:要操作的对象,“java”:要设置的值
3. 获取类的方法
1. 获取方法1. 获取public方法
Method[] methods = Class.getMethods();
method.invoke(p, "mingzi");
2. 获取私有方法
getDeclaredMethod(); //获取私有的成员方法
method.setAccessible(true);//使用前要先使其可见
3. 按照名字获取方法
Method m = pClass.getMethod("setSex", String.class, String.class);//参数:方法名,参数类型1,参数类型2...
Object invoke = m.invoke(p, "男", "名字");//执行此方法,参数:执行的对象,参数1,参数2...
2. 获取方法的名字
String str = method.getName();//getSex
3. 执行方法
Object invoke = m.invoke(p, "男", "名字");//执行此方法,参数:执行的对象,参数1,参数2...
4. 获取方法参数类型列表
Class<?>[] ps = method.getParameterTypes();
4. 获取类的名字
1. Class.getName();5. 类的构造方法;
1. 获取类的私有构造方法:Constructor c = clazz.getDeclaredConstructor(String.class);
c.setAccessible(true);
Person p = (Person) c.newInstance("private constructor");
2. 访问带有参数的构造方法
Constructor c = clazz.getConstructor(String.class, int.class);
Person p = (Person) c.newInstance("hello", 110);
3. 访问没有参数的构造方法
Constructor c = clazz.getConstructor(null);
Person p = (Person) c.newInstance(null);
相关文章推荐
- 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播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序