Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法让Java应用程序根据所使用的操作系统运行某些方法?_Java_Android - Fatal编程技术网

有没有办法让Java应用程序根据所使用的操作系统运行某些方法?

有没有办法让Java应用程序根据所使用的操作系统运行某些方法?,java,android,Java,Android,我的意思是:我已经为Android设备编写了一个非常复杂的Java代码。因此,它包含几个仅在Android中可用的定义(例如使用TTS-STT引擎)。但是,大多数代码也可以在桌面上轻松工作。 现在,为了做到这一点,我必须划掉Android相关的方法,并将其编译为桌面版。然而,由于我经常更新Android的原始代码,所以对桌面进行同样的编辑有点让人筋疲力尽。 如果运行的操作系统是安卓系统,我有没有办法让程序担心代码的某一部分?或者OSX、Windows等,这样无论操作系统如何,它都可以编译而不出错

我的意思是:我已经为Android设备编写了一个非常复杂的Java代码。因此,它包含几个仅在Android中可用的定义(例如使用TTS-STT引擎)。但是,大多数代码也可以在桌面上轻松工作。
现在,为了做到这一点,我必须划掉Android相关的方法,并将其编译为桌面版。然而,由于我经常更新Android的原始代码,所以对桌面进行同样的编辑有点让人筋疲力尽。 如果运行的操作系统是安卓系统,我有没有办法让程序担心代码的某一部分?或者OSX、Windows等,这样无论操作系统如何,它都可以编译而不出错,然后有选择地运行某些方法? 非常感谢您,祝您愉快

SWT也有类似的情况,它为不同的平台使用不同的代码。我建议你看看上面的参考资料。这篇文章中的一个建议是,使用按名称实现的类加载部分代码,这在JDBC中很常见


如果您使用类似Git的东西,您可以在不同的分支上拥有不同操作系统的版本。我还支持Arjan提到的方法,其中操作系统特定的代码可以被尽可能地限制。

对于根据操作系统有选择地运行,请检查系统属性,例如try
system.out.println(system.getProperty(“OS.name”)
@Arjan这并不能解决OP的问题——如果他引用的是android原生方法,代码仍然无法在桌面上编译。据我所知,他希望能够编译和使用单个代码库,而不管他运行的是什么操作系统。@nhouser9它确实不能解决任何编译问题。解决方法是拆分代码,将大部分内容放在一个库中,一个Android项目和一个使用该库的桌面项目。@Arjan谢谢,这听起来是个好主意。我只是想也许在Java中有一些东西,比如“C++ java”,谢谢!我将看到这一点,并回到这里评论我的进展,以供将来参考(如果我确实有一些进展XD)