[英]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.