编写适用于桌面和Android的代码

时间:2013-05-22 18:58:07

标签: java android cross-platform

我正在开发一个Java项目,很可能在将来支持Android。但据我所知,Android有不同的类/ API而不是默认的Java(例如,我不认为android有所有的AWT东西)。所以我想知道的是,我如何编写我的代码,以便如果它在Android上运行,它将使用android API,如果它在桌面上,它使用标准Java API。我研究过条件导入,但与C ++不同,Java中并不存在。那么在Java中如何解决这种问题呢。

以下是我希望能够做到的一个例子:

int[] i;
if(onAnroid)
{
    i = androidFoo.bar();
} else {
    i = javaFoo.bar();
}

修改 我曾想到的一件事是使用Common类,所以我不直接调用API。但是我想弄清楚的是如何在没有编译器抱怨这些类不存在的情况下调用那些不一定存在的类。

4 个答案:

答案 0 :(得分:3)

您可以创建与任何特定用户界面工具包无关的架构层。如果这些需要与用户界面交互,他们可以通过界面类型进行交互。

在这些图层上,您可以使用不同的工具包创建多个表示层。

将软件移植到新的用户界面很常见。从一开始就分离建筑层可能会花费很少。以后对整体材料进行去缠结可能很昂贵,有时甚至对公司而言在经济上是不可行的。无论端口要求是确定的,可能的还是未知的,早期分离架构层都是一种很好的做法。

答案 1 :(得分:2)

您必须分开代码,但不是这样。您的类需要设计为将与平台相关的代码与不是代码的代码分开。您应该专注于将应用程序的核心逻辑保持在一个层中,并在另一层中在屏幕上呈现对象。

答案 2 :(得分:1)

关于不一定存在的类,您可以这样调用:

try {
       MyObject o = (MyObject)Class.forName("org.me.MyObject").newInstance();
} catch(ClassNotFoundException x) {
     // Here you know class does not exist
}

实际上,你应该做得比这更好,但我不记得了。但无论如何都与此相似。

答案 3 :(得分:0)