繁体   English   中英

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

[英]How do I constrain a class to implement a particular static method?

我在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 ,来getSerde ,但这似乎很丑陋。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM