我正在使用GWT库。有一个称为Widget的基类,所有Widget都继承自该类。一些小部件实现某些接口(interface)(例如,HasText),而其他则没有。有时,我希望保证作为参数传递给函数的某些东西属于某个类并实现某个接口(interface)。

例如,我希望有一个带有参数X的函数,其中X是类类型Widget AND的接口(interface)类型HasText。我希望有这种行为,因为只能将窗口小部件添加到布局容器中,并且HasText指定了我实际上从所说窗口小部件中需要的完整行为集。

以伪代码形式,可能是:

public void fx(I_AM_A_Widget_AND_IMPLEMENT_INTERFACE_HasText x){
    //do stuff with x, which is guaranteed to be a Widget AND implement HasText
}

在Java中这有可能吗?如果有多种方法可以这样做,那么有没有更好的选择呢?

最佳答案

您可能可以在此处使用通用方法:

public <T extends Widget & HasText> void fx(T x)

编译器将自动推断T的类型,因此在调用该方法时无需额外的语法。

10-05 18:20