码迷,mamicode.com
首页 > 编程语言 > 详细

java不同类加载器对instanceof关键字运算的影响

时间:2015-05-18 16:47:06      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

内容:对于任意的一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类空间。只要加载类的类加载器不同的话,那么这个两个类就必定不相等(包括equals()方法,instanceof()方法)。此时,虚拟机中存在两个ClassLoaderTest,一个是由系统应用程序类加载器加载的,另一个是由我们定义的类加载器加载的。一个简单的例子说明:注意getResourceAsStream的应用:Class.getResourceAsStream(String path):path 不以"/"开头时默认是从此类所在的包下取资源,以"/"开头则是从ClassPath根下获取,也就是bin开始。

public class ClassLoaderTest {

	public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		ClassLoader myLoader = new ClassLoader() {
			@Override
			public Class<?> loadClass(String name) throws ClassNotFoundException {
				try {
					String className = name.substring(name.lastIndexOf(".") + 1) + ".class";
					
					//返回读取指定资源的输入流
					InputStream is = getClass().getResourceAsStream(className);
					if (is == null) return super.loadClass(name);
					byte[] b = new byte[is.available()];
					is.read(b);
					
					//将一个byte数组转换为Class类的实例
					return defineClass(name, b, 0, b.length);
				} catch (IOException e) {
					throw new ClassNotFoundException(name);
				}
			}
		};
		
		Object object = myLoader.loadClass("test.ClassLoaderTest").newInstance();
		System.out.println(object.getClass());
		System.out.println(object instanceof test.ClassLoaderTest);
	}
}


java不同类加载器对instanceof关键字运算的影响

标签:

原文地址:http://blog.csdn.net/u011345136/article/details/45823423

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