亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅在為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 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號