我有一个属于2个不同包的同一个类。
package x1.y1.Class
packgage x2.y2.Class
如果我通过类加载器调用x1.y1.Class
,是否可能会加载x2.y2.Class
?
答案 0 :(得分:5)
简单地说,否(除非您无意中加载了错误的一个)。
类由其完全限定的类名加载,其中包含包(例如x1.y1.Class
)
答案 1 :(得分:4)
不,它不可能发生,原因有两个:
我只是故意尝试这样做,将p1/Foo.class
替换为类p2.Foo
的文件,并收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: p1/Foo (wrong name: p2/Foo)
如果您想要这样做,您需要一个故意查找错误位置的类加载器,然后修改它加载的字节码。