java中关于强制类型转换

新手上路,请多包涵

tomcat中在实例化Servlet之后,进行了一次强制类型转换是这样的,我打印了一下Servlet类加载器

 InstanceManager instanceManager = ((StandardContext)getParent()).getInstanceManager();
            try {
                servlet = (Servlet) instanceManager.newInstance(servletClass);
                System.out.println("Servlet classloader:"+Servlet.class.getClassLoader());
                System.out.println("servlet instance classloader:"+servlet.getClass().getClassLoader());
            } catch (ClassCastException e) {
                ...
            }

打印的信息是这样的

Servlet classloader:sun.misc.Launcher$AppClassLoader@18b4aac2
servlet instance classloader:ParallelWebappClassLoader
  context: my_servlet
  delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@2ef9b8bc

类加载器不同,这为什么也能强制转换?

阅读 2.5k
1 个回答

类加载器和强制类型转换没有关系,只要两个类兼容就可以转换。更具体的事情是,一个类和它的父类可以由不同加载器加载。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题