我想使EventsRepository类实现一个Interface。 所以它有一些方法:
public class EventsRepository implements IModelLayer {
...
public void getEvents(ICallback<EventBrite> resultEvents) {
WebEventsDataSource.getInstance().getEvents(resultEvents);
}
}
,此方法必须实现一些接口。在这种方法的基础上, 我必须声明哪种接口方法的语义? 我试图声明下一个接口:
public interface IModelLayer<T> {
void getEvents(T resultEvents);
}
但这是不正确的。
非常感谢!
答案 0 :(得分:2)
通用实现和声明如下:
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>
,该方法将使用您定义的类型。
答案 1 :(得分:2)
您快到了,您忘记了类型,请尝试:
public class EventsRepository implements IModelLayer<ICallback<EventBrite>>{
@Override
public void getEvents(ICallback<EventBrite> resultEvents) {
WebEventsDataSource.getInstance().getEvents(resultEvents);
}
}
答案 2 :(得分:1)
如下所示的实现方式。这可能有帮助
public class EventsRepository implements IModelLayer<ICallback<EventBrite>> {
public void getEvents(ICallback<EventBrite> resultEvents) {
WebEventsDataSource.getInstance().getEvents(resultEvents);
}
}
答案 3 :(得分:1)
如果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()
的定义也可能会影响答案。