我有一个只包含一个通用方法的接口:
public interface Presenter {
<T> void query(T queryParameter);
}
现在,我想定义一个Presenter
的子类,我希望类型为String
,就像这样:
public class IpQueryPresenter implements Presenter {
void query(String queryParameter) {
//do something here...
}
}
如何定义?
我看到你的所有答案都定义了接口名称的类型,但这是必须的吗?如果我只想定义泛型方法并覆盖它,是否可能?
答案 0 :(得分:4)
首先,从您的代码中我假设您正在实现一个接口,而不是扩展一个类(尽管您的IpQueryPresenter
类没有extends
或implements
子句。 / p>
您可以将泛型类型参数移动到接口级别:
public interface Presenter<T> {
void query(T queryParameter);
}
然后:
public class IpQueryPresenter implements Presenter<String> {
void query(String queryParameter) {
//do something here...
}
}
答案 1 :(得分:3)
使界面本身具有通用性并在子类中定义您的类型
public interface Presenter<T> {
void query(T queryParameter);
}
public class IpQueryPresenter implements Presenter<String> {
void query(String queryParameter) {
//do something here...
}
}
答案 2 :(得分:1)
在界面上定义T
,例如:
public interface Presenter<T> {
void query(T queryParameter);
}
然后在实现中设置类型:
public class IpQueryPresenter implements Presenter<String> {
//note that you need to make the method public
public void query(String queryParameter) {
//do something here...
}
}