您的位置:首页 > 编程语言 > Java开发

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 class 反射