我需要在两个不同的平台-SDK上使用相同的类。
虽然类和它的方法是相同的,但访问类的路径是不同的。 在我需要使用的一台设备上:
导入a1.a2.classname
而对于我需要使用的第二个设备:
导入b1.b2.b3.classname
请不要问我原因:我没有编写SDK而我无法更改它们。
所以问题是:你会怎么做?有没有办法在不同的sdk版本上导入同一个类的不同版本?
在C ++中,我会使用预编译器开关,如:
#ifdef SDK1
#include "path1/class.h"
#else
#include "path2/class.h"
#endif
你会如何在java中做到这一点?
请考虑我无法从课程派生,因为我只能访问其界面,并且方法的数量太大而无法考虑使用代理
答案 0 :(得分:2)
您可以编写一个轻型代理层,并检查Class.forName()
可用的类。如果您的两个班级将来会在签名等方面出现分歧,那么这就是您的选择。
但是,如果您完全确定它们将始终保留相同的功能,那么只需在构建工具中搜索并替换相关导入的所有实例。在maven中你可以使用资源过滤,this question有一个例子。