如何覆盖泛型方法java

时间:2016-08-16 08:46:52

标签: java generics

我有一个只包含一个通用方法的接口:

public interface Presenter {
    <T> void query(T queryParameter);
}

现在,我想定义一个Presenter的子类,我希望类型为String,就像这样:

public class IpQueryPresenter implements Presenter {
    void query(String queryParameter) {
         //do something here...
    }
}

如何定义?

我看到你的所有答案都定义了接口名称的类型,但这是必须的吗?如果我只想定义泛型方法并覆盖它,是否可能?

3 个答案:

答案 0 :(得分:4)

首先,从您的代码中我假设您正在实现一个接口,而不是扩展一个类(尽管您的IpQueryPresenter类没有extendsimplements子句。 / 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...
  }
}