我维护一个Java Swing应用程序。
为了与Java 5(适用于Apple机器)向后兼容,我们维护了两个代码库,一个使用Java 6中的功能,另一个不使用这些功能。
除了使用Java 6功能的3-4个类外,代码基本相同。
我只想维护1个代码库。编译期间是否有办法让Java 5编译器“忽略”我的代码的某些部分?
我不想根据我的Java编译器的版本简单地注释/取消注释代码的某些部分。
假设这些类具有相似的功能,但在实现方面与1.5和6.0有所不同,则可以将它们合并为一个类。然后,无需编辑源以进行注释/取消注释,就可以依靠编译器始终执行的优化。如果if表达式始终为false,则if语句中的代码将不包含在编译中。
您可以在一个类中创建一个静态变量,以确定要运行的版本:
public static final boolean COMPILED_IN_JAVA_6 = false;
然后让受影响的类检查该静态变量,并将代码的不同部分放入一个简单的if语句中
if (VersionUtil.COMPILED_IN_JAVA_6) {
// Java 6 stuff goes here
} else {
// Java 1.5 stuff goes here
}
然后,当您要编译另一版本时,只需更改该变量并重新编译即可。它可能会使Java文件变大,但是它将合并您的代码并消除您所拥有的任何代码重复。您的编辑器可能会抱怨无法访问的代码或其他任何内容,但是编译器应该乐于忽略它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句