Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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 仅在为Android编译时编译源代码?_Java_Android_Windows_Processing - Fatal编程技术网

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

Java 仅在为Android编译时编译源代码?,java,android,windows,processing,Java,Android,Windows,Processing,我正在为android和pc制作一个游戏,并且必须导入android专有的东西,同时还要编写包含仅适用于android的代码的方法 我希望能够这样做,所以在我编译非android版本的情况下,它不会给出编译错误 boolean android = "The Android Project".equals(System.getProperty("java.specification.vendor")); void setup(){ if (android) importAn

我正在为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;
}

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

相反,您应该将在desktop和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");
}
然后,在处理代码中,您只能使用以下接口:

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");
}
然后在特定于平台的代码中创建这些类的实例,并将其传递到sketch类中。

的可能副本等。