《Java》反射全解

反射加载

反射加载有三种方法
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");

反射得到字段

都是一个样,这里就不表述了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值