为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_笑_17 2023-09-20 17:31:28
我正在为 android 和 pc 制作游戏,并且必须导入 android 独有的内容以及包含仅适用于 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;}
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

您不能有条件地导入这样的类。


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


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


public interface Printer {

  public void print(String s);

}

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


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);

  }

}

然后在您的处理代码中,您将只使用该接口:


Printer printer;


void setPrinter(Printer printer) {

  this.printer = printer;

}


void draw(){

  printer.print("in draw");

}

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


查看完整回答
反对 回复 2023-09-20
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信