如何用泛型方式编写它?

时间:2015-11-27 07:34:25

标签: java generics

我有一个界面Parseable。其中我有方法应该返回实现方法的对象。说,

P1 implements Parseable {
    P1 fromJson(JSONObject){}
}

它使用以下签名给出不安全类型警告。我该如何解决?

<T> T fromJson(JSONObject)

3 个答案:

答案 0 :(得分:4)

使界面本身是通用的而不是方法。

Parseable声明为:

public interface Parseable<T> {
    public T fromJson(JSONObject obj);
}

P1

public class P1 implements Parseable<P1> {
    @Override
    public P1 fromJson(JSONObject obj){}
}

答案 1 :(得分:2)

好。界面需要看起来像

public interface Parseable<T> {
    T fromJson(JSONObject json);
}

您的课程如下:

public class P1 implements Parseable<P1> {
    @Override public P1 fromJson(JSONObject json) { ... }
}

答案 2 :(得分:1)

public interface Parseable<T> {
    T fromJson(JSONObject js);
} 

P1 implements Parseable<P1> {
    P1 fromJson(JSONObject js) { ... }
}