如何重写java泛型方法

L. *_*ter 3 java generics

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

public interface Presenter {
    <T> void query(T queryParameter);
}
Run Code Online (Sandbox Code Playgroud)

现在,我想定义 的子类,Presenter并且类型为String,就像这样:

public class IpQueryPresenter implements Presenter {
    void query(String queryParameter) {
         //do something here...
    }
}
Run Code Online (Sandbox Code Playgroud)

如何定义呢?

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

Era*_*ran 5

首先,从您的代码中,我假设您正在实现一个接口,而不是扩展一个类(尽管您的IpQueryPresenter类没有extendsorimplements子句)。

您可以将泛型类型参数移至接口级别:

public interface Presenter<T> {
    void query(T queryParameter);
}
Run Code Online (Sandbox Code Playgroud)

进而 :

public class IpQueryPresenter implements Presenter<String> {
    void query(String queryParameter) {
         //do something here...
    }
}
Run Code Online (Sandbox Code Playgroud)