gpt4 book ai didi

java - 如何防止Java为较新的SDK编译部分代码?

转载 作者:行者123 更新时间:2023-11-30 03:10:16 25 4
gpt4 key购买 nike

我想编写适用于 Java 1.8 和 1.7 的代码。具体来说,我想在接口(interface)中实现一个静态方法。这在 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。

最佳答案

没有干净的 Java 方法可以做到这一点。有多种方法(您也可以组合使用)来实现此目的。该解决方案的核心是一个小型代码生成器,它可以生成您需要的代码。您必须配置构建系统才能在 javac 之前调用生成器。被调用。

  1. 将代码放入不同的文件(页眉、页脚、Java 8 代码)中,并在构建系统的准备步骤中创建最终的 Java 类(只需连接您需要的部分)。对于 Maven,这将是 generate-sources 。对于 Ant,使用一组目标。
  2. 将代码放入同一个文件中,并使用魔术注释来指定代码的开始和结束位置。代码本身在第一列中用行注释注释掉了:

    /*!!!JAVA8-START!!!*/
    //...Java 8 code...
    /*!!!JAVA8-END!!!*/

    如果您的构建系统检测到 Java 8,它可以搜索以 // 开头的行。两条注释之间并删除 // .

  3. 如果使用 Maven,则可以拥有三个模块。包含非 Java 7/8 特定代码的公共(public)模块。一个用于 Java 7 的模块,一个用于 Java 8 的模块。使用 build profile 启用特定模块。 。使用单元测试确保 Java 7 和 8 模块中的代码相同(例如,删除 Java 8 特定部分并将其余部分与 Java 7 进行比较)。

关于java - 如何防止Java为较新的SDK编译部分代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33759086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com