我有一个自定义“小部件”(自定义控件),任何类可以在其布局中使用。但是,如果他们要使用此小部件,则必须实现其界面。这个小部件有一个名为WidgetInterface的接口,只有一个名为handleAction()的方法。
如果Parent类想要使用这个小部件,它应该怎么做呢?
构造Widget并将其自身的引用传递给它的构造函数?
Widget newWidget = new Widget(this);
使用类型参数构建Widget本身?
Widget<Parent> newWidget = new Widget<Parent>(this);
widget类必须检查以确保父类使用instanceof或泛型实现其接口。 。
当然,父类可以选择如何处理handleAction()。
答案 0 :(得分:0)
你的第一个构造函数是对的。
这是一个“多态”的例子,它与被引用的对象有关,好像它是它所扩展的类的对象或它实现的接口。在您的示例中,使用Widget的类实现了WidgetInterface接口,这意味着它的实例也是WidgetInterface的实例。网上有很多信息,StackExchange在这里详细解释了这一点,所以我不再赘述了。首先查看the java tutorial on inheritance,特别是关于多态的部分。
在Widget中将构造函数定义为
public Widget(WidgetInterface actionhandler)
然后你可以传入任何类型的对象,只要它实现WidgetInterface。