首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中几个平台的平台相关代码

Java中几个平台的平台相关代码
EN

Stack Overflow用户
提问于 2016-02-02 15:47:48
回答 1查看 905关注 0票数 3

我正在编写的程序应该运行在Linux和Windows操作系统上。

代码语言:javascript
复制
if (isLinux) {
    // some linux code
} else {
    // some windows code
}

它使用依赖于平台的代码和库,因此它现在不能在Linux上编译。如何只编译当前操作系统代码的一部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 16:24:10

创建一个接口:

代码语言:javascript
复制
interface OSSpecificStuff {
    void method(...)

然后创建两个接口实现,一个用于Windows,另一个用于Linux。

代码语言:javascript
复制
class LinuxStuff implements OSSpecificStuff {
    void method(...) {
        Linux specific implementation

为了避免编译错误,请将这些O/S特定的类编译成单独的jar文件。

使用以下方法创建适当的类:

代码语言:javascript
复制
Class clazz = isLinux ? Class.forName("LinuxStuff") : Class.forName("WindowsStuff");
OSSpecificStuff stuff= (OSSpecificStuff ) clazz.newInstance();

或者,您只需创建两个名为OSSpecificStuff的类,并将它们放在两个不同的jar文件中,并在运行程序时将适当的jar文件包含在类路径中。

高级材料:

您会发现很多SE文章都是关于Class.newInstance是如何坏的,您可能想要使用Constructor

另外,我还没有在上面的代码中使用泛型来保持简单。

请参阅Why is Class.newInstance() “evil”?

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35157855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档