黑马程序员_学习笔记8用类加载器的方式管理资源和配置文件及类加载器的总结

---------------------- android培训java培训、期待与您交流! ----------------------

 今天总结了了一下视频中关于类加载器的知识点。以及视频中的应用。

多种方式实现同一个功能:加载配置文件。,

常见的非反射加载方式的语句:

1,当config.properties位于classpath下时InputStream ips = new FileInputStream("config.properties")

2, 当config.properties位于classpath下的某个包中时,需用 InputStream ips = new FileInputStream("包名/config.properties")   

用类加载器实现1语句: 3.1     main所在的类名.class. getClassLoader.getResourseAsStream ("config.properties")              

用类加载器实现2语句: 3.2     main所在的类名.class. getClassLoader.getResourseAsStream ("包名/config.properties") 

还有另一个反射方法可用:  4,main所在的类名.class.getResourseAsStream ("/包名/config.properties")//配置文件与main所在的class无关系

当配置文件于main所在的class位于同一个目录中时,4句可以简化为    main所在的类名.class.getResourseAsStream ("config.properties")

类加载器的总结:

java.lang.ClassLoader

java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即java.lang.Class类的一个实例。除此之外,ClassLoader还负责加载 Java 应用所需的资源,如图像文件和配置文件等。为了完成加载类的这个职责,ClassLoader提供了一系列的方法,比较重要的方法如下所示。
getParent() 返回该类加载器的父类加载器。

loadClass(String name) 加载名称为 name的类,返回的结果是 java.lang.Class类的实例。

findClass(String name) 查找名称为 name的类,返回的结果是 java.lang.Class类的实例。

findLoadedClass(String name) 查找名称为 name的已经被加载过的类,返回的结果是java.lang.Class类的实例。

defineClass(String name, byte[] b, int off, int len) 把字节数组 b中的内容转换成 Java 类,返回的结果是 java.lang.Class类的实例。这个方法被声明为 final的。

resolveClass(Class<?> c) 链接指定的 Java 类。

系统提供的类加载器主要有下面三个:

1 ,引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader

2,扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。

3,系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过ClassLoader.getSystemClassLoader()来获取它。

除了系统提供的类加载器以外,开发人员可以通过继承 java.lang.ClassLoader类的方式实现自己的类加载器。

可以写自己的类加载器来在new实例之前对class文件进行加密和解密。

视频中Java基础加强_类加载器的一个高级问题的实验分析的答案可以用一句话总结,父类应位于子类加载器的加载位置或位于子类加载器的父加载器的加载位置中。(被加载的类应该位于合适的与位置。)

 

---------------------- android培训java培训、期待与您交流! ----------------------详细请查看: http://edu.csdn.net/heima
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值