【发布时间】:2011-11-18 13:27:06
【问题描述】:
我需要在两个不同的平台 SDK 上使用相同的类。
虽然类及其方法相同,但访问该类的路径不同。 在我需要使用的一台设备上:
导入 a1.a2.classname
而对于我需要使用的第二个设备:
导入 b1.b2.b3.classname
请不要问我为什么:SDK 不是我写的,也无法更改。
所以问题是:你会怎么做?有没有办法在不同的sdk版本上导入同一个类的不同版本?
在 C++ 中,我会使用如下预编译器开关:
#ifdef SDK1
#include "path1/class.h"
#else
#include "path2/class.h"
#endif
你会如何在 java 中做到这一点?
请考虑我不能从类派生,因为我只能访问它的接口,而且方法的数量太大而无法考虑使用代理
【问题讨论】:
-
这会让你编写多个构建。如果您使用
Class.forName(),您可以为两者使用一个构建并在运行时选择差异。 (应用程序可以根据使用情况检测要导入哪一个) -
问题在于,在我使用该类的所有类中,我必须为不同的 SDK 添加不同的导入。这是真的,除非我将类包装在我想避免的代理中
-
我倾向于避免多次构建,因为一旦你开始走这条路,这可能会变成一场噩梦。
标签: java macros import precompiler