java反射基础知识汇总

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值