Java 仅在为Android编译时编译源代码?
我正在为android和pc制作一个游戏,并且必须导入android专有的东西,同时还要编写包含仅适用于android的代码的方法 我希望能够这样做,所以在我编译非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
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类中。的可能副本等。