Java 强制客户端类实现子类';界面

Java 强制客户端类实现子类';界面,java,interface,javafx,Java,Interface,Javafx,我有一个自定义的“小部件”(自定义控件),任何类都可以在它们的布局中使用。然而,如果他们要使用这个小部件,他们必须实现它的接口。此小部件有一个名为WidgetInterface的接口,只有一个名为handleAction()的方法 如果父类想要使用这个小部件,它应该如何使用 构造小部件并将其自身的引用传递给其构造函数 Widget newWidget = new Widget(this); 用一个类型参数作为自己来构造小部件 Widget<Parent> newWidget = n

我有一个自定义的“小部件”(自定义控件),任何类都可以在它们的布局中使用。然而,如果他们要使用这个小部件,他们必须实现它的接口。此小部件有一个名为WidgetInterface的接口,只有一个名为handleAction()的方法

如果父类想要使用这个小部件,它应该如何使用

构造小部件并将其自身的引用传递给其构造函数

Widget newWidget = new Widget(this);
用一个类型参数作为自己来构造小部件

Widget<Parent> newWidget = new Widget<Parent>(this);
Widget newWidget=newWidget(这个);
widget类必须检查以确保父类使用instanceof或泛型实现其接口


当然,父类可以选择如何处理handleAction()。

您的第一个构造函数是正确的

这是一个“多态性”的例子,它与被引用的对象有关,就好像它是它扩展的类的对象或它实现的接口一样。在您的示例中,使用小部件的类实现了接口WidgetInterface,这意味着它的实例也是WidgetInterface的实例。网上和StackExchange上都有很多详细的信息,所以我这里不再赘述。首先,请特别查看多态性部分

在小部件中,将构造函数定义为

public Widget(WidgetInterface actionhandler)
然后,您可以传入任何类型的对象,只要它实现了WidgetInterface