提问人:Stanly T 提问时间:10/17/2018 最后编辑:Stanly T 更新时间:10/17/2018 访问量:73
如果我已经有泛型实现,如何声明接口方法
How to declare an interface method if i already have an implementation with generic
问:
我想让 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);
}
但这是不正确的。
多谢!
答:
1赞
Pandey Amit
10/17/2018
#1
实现如下..这可能会有所帮助
public class EventsRepository implements IModelLayer<ICallback<EventBrite>> {
public void getEvents(ICallback<EventBrite> resultEvents) {
WebEventsDataSource.getInstance().getEvents(resultEvents);
}
}
2赞
CodeMatrix
10/17/2018
#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>
2赞
Leviand
10/17/2018
#3
你快到了,你忘记了类型,试试:
public class EventsRepository implements IModelLayer<ICallback<EventBrite>>{
@Override
public void getEvents(ICallback<EventBrite> resultEvents) {
WebEventsDataSource.getInstance().getEvents(resultEvents);
}
}
1赞
Eran
10/17/2018
#4
如果 parameter 始终为 ,则可以按如下方式定义接口和类: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()
评论