classloader与equals()的关系

最常规的equals()方法我就不过多的解释了。这两天我学习了classloader,对其有了一定的了解,其中有一个命名空间的概念:每个classloader实例维持了一个独有的名称空间。于是我就想了解:不同的classloader所加载的类并非是同一个类,话不多说,具体见代码:

package com.cxz.classloader;

import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class Tester {

public static void main(String[] args) throws MalformedURLException,
InstantiationException, IllegalAccessException,
ClassNotFoundException {
URL url = null;

url = new URL("file:///E:\\classes\\");

URL[] urls = new URL[1];
urls[0] = url;
URLClassLoader urlClsLdr1 = new URLClassLoader(urls);
Compare compare1 = (Compare) urlClsLdr1.loadClass(
"com.cxz.classloader.Sample").newInstance();

Compare compare3 = (Compare) urlClsLdr1.loadClass(
"com.cxz.classloader.Sample").newInstance();

URLClassLoader urlClsLdr2 = new URLClassLoader(urls);
Compare compare2 = null;
compare2 = (Compare) urlClsLdr2.loadClass("com.cxz.classloader.Sample")
.newInstance();

System.out.println(compare1.getClass().equals(compare2.getClass()));
}

}

输出显示:不同classloader加载的class根本就不同。所以equals方法也不可能通过。从jvm的角度而言,这两个同一个包、同名的类也是不同的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值