java反射机制理解

java的反射机制
        反射机制可以允许我们实例化一个类,调用方法操作属性从编码期改为在运行期决定。并且也可以在运行期间动态的得知一个类的情况(它有哪些方法、属性等)
        反射机制可以大大提高代码的灵活度,但是实际开发中使用要适度。过度是用反射机制会降低代码的运行效率。

     想获取一个类的类对象的方式:
         1、类名.class
             每个类都有一个静态的属性:class,
             可以直接获取这个类的类对象。
              当我们明确需要获取某个类的类对象时可以使用这种方式。
         2、通过Class的静态方法:forName,
              这种方式我们可以指定想加载的类的名字来获取该类的类对象(路径要写全:包名.类名)
         3、通过类加载器ClassLoader

        注:Class.forName(String className)
        这里在加载一个类时指定的字符串为加载类的完全限定名:包名.类名

        Class有一个快速实例化对象的方法:newInstance
             但是要注意,该class实例表示的类必须要包含无参构造方法,否则不能使用这种方式实例化。
    利用反射机制步骤:
        //1、加载类对象
        Class cls=Class.forName("Reflect.Person");
        //2、实例化
        Object o=cls.newInstance();//默认类型是Object
        /*
         * 3、通过类对象获取其定义的方法
         * method的每一个实例用于表示一个类中的一个具体的方法
         */
        Method method=cls.getMethod("sayHello", null);//null表示sayHello方法的参数类型,无参就是null
        //4、调用该方法
        method.invoke(o, null);//null表示调用方法是传进去的参数


拓展:jdk5.0以后推出:
     可变参数:不知道多少个,你给几个就是几个
    public static void dosome(String... a){
        System.out.println(a.length);
    }
    public static void dosome(int a,String... a1){
        System.out.println(a1.length);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值