码迷,mamicode.com
首页 > 其他好文 > 详细

(反射)类的加载(33)

时间:2018-12-19 01:19:03      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:ati   prot   new   demo   连接   ble   生成   安全   ssi   

1、类的加载过程:加载、连接、初始化。

2、类的加载:将.class文件加载到内存中,并为之生成对应的class对象。

3、JRE System Librarys :运行时期 系统的类库。

4、java的反射机制:动态获取类的信息和动态调用类的方法的功能。

5、接口是个好东西,因为他可以约束实现接口的类的方法。

技术分享图片

6、获取Class文件对象的三种方式(三种方式获取的Class都是同一个,也就是唯一性的):对象获取,类名获取,Class类的静态方法获取(Class = Class.forName("com.taobao.demo.Person"))。 // 注意Stirng 参数是带着包名走  =>即:包名.类名

7、Constructor:是 描述构造方法的对象类,返回值是类的构造器数组 Contructor[]   //注意:带private的方法不会返回。

8、关键字权限 ===》public : 外包都能用(最高权限)   default:本包内能用。 protected :子类专用。    private :只能自己用。

 

import java.lang.reflect.Constructor;

public class ReflectDemo {

    public static void main(String[] args) throws Exception{
        Class c1 = Class.forName("cn.itcast.demo1.Person");
//        Constructor[] c = c1.getConstructors();
//        for(Constructor con : c){
//            System.out.println(con);
//        }
        //运行空参构造方法
        Constructor c = c1.getConstructor();
        Object obj = c.newInstance();
        Person p = (Person)obj;
//        System.out.println(obj.toString());
//        p.eat();
        
        //通过反射,获取有参数的构造方法并运行
        Constructor chave = c1.getConstructor(String.class,int.class);
        Object obj_have = chave.newInstance("何",25);
        //System.out.println(obj_have);
        
        //反射获取构造方法并运行,有快捷点的方式
        //前提:
                //被反射的类,必须具有空参构造方法
                // 构造方法权限 必须是 public
        // 666 直接创建被反射类的对象实例。
        Class c2 = Class.forName("cn.itcast.demo1.Person");
        Object obj2 = c2.newInstance();
        
        //反射获取私有的构造方法运行
            //不推荐,因为破坏了程序的封装性、安全性
        Class c3 = Class.forName("cn.itcast.demo1.Person");
        Constructor con3 = c3.getDeclaredConstructor(int.class, String.class);
        //暴力反射技术:打破封装性。即运行时期,取消java访问权限检查
        con3.setAccessible(true);
        Object obj3 = con3.newInstance(18,"里斯");
        System.out.println(obj3);

    }

}

 

(反射)类的加载(33)

标签:ati   prot   new   demo   连接   ble   生成   安全   ssi   

原文地址:https://www.cnblogs.com/ivan5277/p/10140926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!