如何约束类来实现特定的静态方法?

时间:2018-04-07 18:14:02

标签: java parameterized-types

我在Kafka应用程序中使用了以下类:

public abstract class SerdeEnabled< Tse > {
    abstract public Serde< Tse > getSerde();
}

public class SerdeUsing< Tsu extends SerdeEnabled > {
    public void method() {
        Tsu tsu = new Tsu();  // Compile Error: cannot instantiate the type Tsu
        Serde< Tsu > serde = tsu.getSerde();
    }
}

如上所述,这不会编译。现在,方法getSerde()不依赖于 它的各个类的实例数据,实际上可能是static除了 事实上,Java不允许在抽象类(或接口)中使用静态方法。

我想我可以通过让SerdeUsing.method接受Tsu实例来强制执行此操作, 然后用它来调用getSerde,但这看起来很难看。

有关如何获得预期效果的任何建议?

1 个答案:

答案 0 :(得分:0)

  • java 8允许在接口
  • 中使用静态方法
  • 你不能在Tsu上调用构造函数,因为它是一个类型参数。

因此可以将getSerde()方法作为静态方法提取到接口,并使SerdeEnabled实现此接口。