我想制作一个适用于Java 1.8和1.7的代码。具体来说,我想在接口中实现静态方法。这在java 8中是允许的,但在7中是不允许的。我读过有一种方法管C宏,也就是说这不是好习惯。另外,管道宏不告诉我使用哪个SDK?
所以有任何好的"解决这个问题?
更新:
请不要建议实现抽象类。谢谢。
没有重复
Can Java 8 code be compiled to run on Java 7 jvm?询问是否有一种方法可以通过命令行来编译1.7中的java 1.8代码。至少答案看起来如此。我这样做的问题是,如果有一种方法可以在代码中指明哪些部分来自代码属于1.8,哪些部分属于1.7。
答案 0 :(得分:2)
没有干净的Java方法可以做到这一点。有几种方法(也可以组合)来实现这一点。该解决方案的核心是一个小代码生成器,可以生成您需要的代码。您必须将构建系统配置为在调用javac
之前调用生成器。
generate-sources
。对于Ant,使用一组目标。将代码放入同一文件中,并使用魔术注释指定代码的开始和结束位置。代码本身在第一列中注释掉了行注释:
/*!!!JAVA8-START!!!*/
//...Java 8 code...
/*!!!JAVA8-END!!!*/
如果您的构建系统检测到Java 8,它可以搜索两个注释之间以//
开头的行,并删除//
。