簡體   English   中英

如果我已經有一個泛型的實現,如何聲明一個接口方法

[英]How to declare an interface method if i already have an implementation with generic

我想創建EventsRepository類來實現一個接口。 所以它有一些方法:

public class EventsRepository implements IModelLayer {
 ...   
    public void getEvents(ICallback<EventBrite> resultEvents) {
        WebEventsDataSource.getInstance().getEvents(resultEvents);
    }
}

而且這個方法必須實現一些接口。 在這個方法的基礎上,我必須聲明什么樣的接口方法的語義? 我試圖聲明下一個界面:

public interface IModelLayer<T> {
    void getEvents(T resultEvents);
}

但這不正確。

非常感謝!

通用實現和聲明看起來像這樣:

public interface IModelLayer<T> {
    void getEvents(T resultEvents);
}

接口已經正確定義,只需要更改它的實現。

課程實施:

public class EventsRepository implements IModelLayer<ICallBack<EventBrite>> { //Generic type definition
...   
    @Override
    public void getEvents(ICallback<EventBrite> resultEvents) {
        WebEventsDataSource.getInstance().getEvents(resultEvents);
    }
}

例如在其他情況下:

public class StringRepository implements IModelLayer<ICallBack<String>> { //Generic type definition
...   
    @Override
    public void getEvents(ICallback<String> resultEvents) {
        //todo do something with the callback stuff.
    }
}

這里的事情是你還沒有定義你想要使用的泛型類型。 因此,您將implements IModelLayer更改為implements ModelLayer<YourType>並且該方法將使用您定義的類型。

你幾乎就在那里,你忘記了類型,嘗試:

public class EventsRepository implements IModelLayer<ICallback<EventBrite>>{
    @Override
    public void getEvents(ICallback<EventBrite> resultEvents) {
            WebEventsDataSource.getInstance().getEvents(resultEvents);
    }
}

如下所示......這可能有所幫助

      public class EventsRepository implements IModelLayer<ICallback<EventBrite>> {
        public void getEvents(ICallback<EventBrite> resultEvents) {
           WebEventsDataSource.getInstance().getEvents(resultEvents);
       }
      }

如果getEvents參數始終是ICallback ,則可以按如下方式定義接口和類:

public interface IModelLayer<T> {
    void getEvents(ICallback<T> resultEvents);
}

public class EventsRepository implements IModelLayer<EventBrite> {
 ...   
    public void getEvents(ICallback<EventBrite> resultEvents) {
        WebEventsDataSource.getInstance().getEvents(resultEvents);
    }
}

當然, WebEventsDataSource.getInstance().getEvents()的定義也可能會影響答案。

暫無
暫無

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

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