【问题标题】:Is there a way to make a Java application run certain methods depending on which OS is used?有没有办法让 Java 应用程序根据使用的操作系统运行某些方法?
【发布时间】:2016-06-10 11:26:56
【问题描述】:

我的意思是:我编写了一个非常精细的 Java 代码,它是针对 Android 设备的。因此,它包含了几个仅在 Android 中可用的定义(例如使用 TTS-STT 引擎)。但是,大部分代码也可以轻松地在桌面上运行。
现在,为此,我必须删除与 Android 相关的方法并将其编译为桌面。但是,由于我经常更新 Android 的原始代码,所以在桌面上继续进行相同的编辑有点累。 有没有一种方法可以告诉程序只有在运行的操作系统是 Android 时才担心代码的某个部分?或 OSX、Windows 等。这样无论操作系统如何,它都能无错误地编译,然后有选择地运行某些方法? 非常感谢,祝你有美好的一天

【问题讨论】:

  • 根据操作系统有选择地运行,检查系统属性,例如尝试System.out.println(System.getProperty("os.name"));docs.oracle.com/javase/tutorial/essential/environment/…
  • @Arjan 这并不能解决 OP 的问题 - 如果他引用 android 本机方法,代码仍然无法在桌面上编译。据我了解,他希望能够编译和使用单个代码库,而不管他运行的操作系统是什么。
  • @nhouser9 确实没有解决任何编译问题。
  • 一种解决方案是拆分代码,一个包含大部分内容的库,一个 Android 项目和一个使用该库的桌面项目。
  • @Arjan 谢谢,这听起来是个好主意。我只是想在 Java 中可能会有一些东西,比如 C++ 中的“#ifdef APPLE”。

标签: java android


【解决方案1】:

SWT jar for different platform

SWT 也有类似的情况,它为不同的平台使用不同的代码。我建议你看看上面的参考资料。帖子中的一个建议是,您可以像在 JDBC 中那样使用按名称实现类来加载部分代码。

如果你使用 Git 之类的东西,你可以在不同的分支上拥有不同操作系统的版本。我也会采用 Arjan 提到的方法,在这种方法中,可以尽可能限制特定于操作系统的代码。

【讨论】:

  • 谢谢!我会看到这个并回到这里评论我的进展以供将来参考(如果我确实可以取得一些进展XD)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-12
相关资源
最近更新 更多