簡體   English   中英

Java參數通用接口

[英]Java Parameter Generic interface

我對參數通用接口有疑問。 我有2個不同的接口,我需要將該接口傳遞給構造函數,但是構造函數會發出警告。

public interface FormFragmentContract {
  interface View extends BaseView {
    void updateWorkshopUI(int icon);
    void showRemoveFavoriteDialog(String wsId, String name);
    void favoriteOnClick();
    void showSnackbar();
  }
}

public interface WorkshopListContract {
  interface View extends BaseView {
    void initializeMap();
    void onSuccessInitMap();

    void favoriteOnClick();
    void showSnackBar(String message);
   }
}

和構造函數代碼this給了像下面的警告:

 workshopAdapter = new WorkshopAdapter(mActivity, workshopList, this); <- this give warning mismatch type

 public WorkshopAdapter(Context context, List<Workshop> workshops, //NEED TO BE GENERIC) {
    this.context = context;
    this.workshops = workshops;
}

如何使我的兩個接口通用,以便可以將兩個接口都用作參數?

編輯:因為兩個接口都包含favoriteOnClick(),如果我將FormFragmentContract傳遞到構造函數中,如果我也將它FormFragmentContract給構造函數,則可以使用FormFragment的favouriteOnClick(),而使用WorkshopListContract則相反。

使用常見方法創建一個單獨的接口:

就像是:

public interface WorkshopContractView extends BaseView {
    void favoriteOnClick();
    void showSnackBar(String message);
}

然后使兩個接口都對其進行擴展:

public interface FormFragmentContract extends WorkshopContractView  {
    void updateWorkshopUI(int icon);
    void showRemoveFavoriteDialog(String wsId, String name);
}

public interface WorkshopListContract extends WorkshopContractView {
    void initializeMap();
    void onSuccessInitMap();
}

不知道為什么要在那里嵌套接口。 他們似乎多余。

然后,讓您的通用構造函數接受WorkshopContractView如下所示:

public WorkshopAdapter(Context context, List<Workshop> workshops, WorkshopContractView view) {
    this.context = context;
    this.workshops = workshops;
//...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM