gpt4 book ai didi

java - 仅在为Android编译时才编译源代码?

转载 作者:行者123 更新时间:2023-11-29 22:47:15 24 4
gpt4 key购买 nike

我正在为 android 和 pc 制作游戏,并且必须导入 android 独有的内容以及包含仅适用于 android 的代码的编写方法

我希望能够做这样的事情,所以在我编译非安卓版本的情况下,它不会给出编译错误

boolean android = "The Android Project".equals(System.getProperty("java.specification.vendor"));
void setup(){
if (android)
importAndroid();
//other setup stuff irrelevant to the question
}

void importAndroid(){
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.content.Context;
import android.app.Activity;
}

最佳答案

你不能像那样有条件地导入类。

相反,您应该将同时在桌面和 Java 上运行的代码封装到它自己的类(或多个类)中,您可以将其用作库。然后构建一个桌面应用程序和一个仅包含特定于一个版本的代码的 Android 应用程序。两个特定于平台的项目都将共享代码用作库。

如果您需要从共享代码中调用特定于平台的代码,请通过接口(interface)执行此操作,这样您就不必关心共享代码中的特定于平台的代码。像这样:

public interface Printer {
public void print(String s);
}

然后在该接口(interface)的实现中实现特定于平台的代码:

public class DesktopPrinter implements Printer {
public void print(String s) {
System.out.println(s);
}
}


public class AndroidPrinter implements Printer {
public void print(String s) {
Log.d("MyApp", s);
}
}

然后在您的处理代码中,您只会使用接口(interface):

Printer printer;

void setPrinter(Printer printer) {
this.printer = printer;
}

void draw(){
printer.print("in draw");
}

然后在特定于平台的代码中创建这些类的实例,并将其传递到您的草图类中。

关于java - 仅在为Android编译时才编译源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58229141/

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