可以使用两个具有相同名称和相同包的java类吗?

gui*_*ism 14 java

是否可以在java中导入和使用两个具有相同名称和包的不同类?

例如,假设我有两个名为"com.foo.Bar"的类略有不同.我希望能够同时使用两者,但我有一个限制(因为愚蠢的反射废话)迫使我保持​​名称和包相同.

是否有一些java的功能允许我导入和隔离这些类中的每一个?

为了详细说明,我改变了我的avro模式,它们应该不会被更改(哎呀!)现在我想回去并将使用我的新模式无法读取的旧avro文件更改为文件我的新架构可以读取.Avro似乎强迫您使用特定的类和包名称来加载文件.

rfe*_*eak 9

就在这里.您需要实现自己的类加载器并玩一些游戏才能在运行时访问它们.

我确信这是可能的,因为我遇到了一个非常难以调试的问题,其中有人在他们的产品中有一个奇怪的类加载器,它正在搞乱加载库并从库的2个不同版本提供相同文件的2个不同版本.

然而,这听起来像一个不可思议的坏主意.我会回去找一个解决问题的不同方法.从长远来看,这只会给你带来痛苦.哎呀,它可能已经是,因为你调查类加载器.

编辑:具体来说,你不能"导入"两者.但是您可以在运行时访问它们.


Joã*_*lva 5

不,正是使用java包来避免这个问题.