Java扩展特定类型

时间:2017-12-02 03:27:14

标签: java generics inheritance

说我有以下界面:

public interface Renderer {
...
    public <T> void setBackingGraphics(T t);
}

我现在如何以指定特定&#34; T&#34;的方式实现界面?使用?

@Override
public <Graphics> void setBackingGraphics(Graphics t) {
    ...
}

以上显然不起作用,因为&#34; Graphics&#34;将被视为另一个占位符。我如何实际使它&#34;可用&#34;?让我通过使用泛型类作为示例来证明我的意思:

public interface A<T> {
    T someT();
}
public class C extends A<B> {
    B someT(){...}
}

如果我只想将它应用于特定方法,上述工作如何工作?

1 个答案:

答案 0 :(得分:0)

您需要能够使用任何Renderer致电setBackingGraphics Object,因此您唯一能做的就是:

@Override
public void setBackingGraphics(Object t) {
}

如果你想要更具体的东西,你需要绑定你的参数,例如:

public interface Renderer {
    public <T extends String> void setBackingGraphics(T t);
}

然后你可以这样做:

@Override
public void setBackingGraphics(String t) {
}