两个都可以用于从 classpath 里面进行资源读取,
两个方法的区别是资源的定义不同,
一个主要用于相对与一个object取资源,
而另一个用于取相对于classpath的资源,用的是绝对路径。
在使用Class.getResourceAsStream 时, 资源路径有两种方式,
一种以 / 开头,则这样的路径是指定绝对路径,
一种不以 / 开头, 则路径是相对与这个class所在的包的。
在使用ClassLoader.getResourceAsStream时, 路径直接使用相对于classpath的绝对路径。
Tools.class.getClassLoader().getResourceAsStream(file);
首先,调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,而后在类类型上调用getClassLoader()方法是得到当前类型的类加载器,在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就是保证是和类类型同一个加载器加载的。
最后调用了类加载器的getResourceAsStream()方法来加载文件资源
分享到:
相关推荐
classloader 加密解密应用程序 ,反编译class
这样,每次调用代理类中的方法,都会先检查实现类的class文件是否是最新的,如果不是则重新加载,达到动态加载实现类class的目的。 关键字: Java实现热加载; Java动态加载class; Java覆盖已加载的class; Java...
NULL 博文链接:https://ldbjakyo.iteye.com/blog/1046984
破解java加密的ClassLoader.java,在classloader植入破解代码
Java 虚拟机中ClassLoader 相关简介 双亲委托机制 Android 中ClassLoader 简介
NULL 博文链接:https://lz12366.iteye.com/blog/735289
ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的
ClassLoader类加载机制和原理详解
自定义classloader的使用
ClassLoader原理,ClassLoader原理 ClassLoader原理
Java ClassLoader定制实例
并且只有调用了newInstance()方法采用调用构造函数,创建类的对象看下Class.forName()源码//Class.forName(String c
破解java加密的rt.jar,在classloader植入破解代码,默认输出到c:/TEMP/classes/目录。使用方法:只要下载本rt.jar,然后替换掉jdk1.8.0_25\jre\lib目录下的rt.jar。然后运行你需要破解的java程序即可,如果你的java...
自定义ClassLoader,控制台输入调试。 运行期间 重新载入指定目录的class文件。可实现对于类的功能函数更新。 用到java 反射,@interface 等技术
一个开源的Cplusplus类加载器,基于它实现了一个简单的例子,见我写的classloader的文章。
eclipse工程格式 博文链接:https://aga.iteye.com/blog/200818
用于验证理解Android中Classloader加载类机制的程序demo,从中可以对比DexClassLoader和PathClassLoader的区别联系。
java classloader classpath 张孝祥
ClassLoader与其他类的不同之处是它是为JVM服务的,属于“公务员”,例如Thread带有getContextClassLoader()和setContextClassLoader()方法; 2、ClassLoader的实现类URLClassLoader完成工作的方法是根据传入的...
Classloader