gpt4 book ai didi

java - 从泛型类型参数(类型变量)扩展的类?

转载 作者:行者123 更新时间:2023-12-01 18:38:19 26 4
gpt4 key购买 nike

是否可以使类从泛型类型扩展?

我想使用 implementsextends 对不同的组件进行子类化,以便为所有子类添加统一的功能。

我想要实现的是:

class MyTable extends MyAbstractComponent<JTable> {...}
class MyPanel extends MyAbstractComponent<JPanel> {...}


    MyAbstractComponent t = new MyTable();
MyAbstractComponent p = new MyPanel();
container.add(t);
container.add(p);

在这种情况下,我将如何制定MyAbstractComponent
我尝试了以下操作,但它给了我错误“找到类型:参数 C.预期:类”:

abstract class MyAbstractComponent<C extends Component> extends C {...}

最佳答案

您已经从编译器得到了很好的答案,因此不可能让类扩展类型参数。类型参数不是类。而不是abstract class MyAbstractComponent<C extends Component> extends C {...}我会简单地省略泛型(这里不太有用)或写:

abstract class MyAbstractComponent<C extends Component> extends Component {...}

关于覆盖愿望的备注getSelectedRows() :

这只能在 JTable 子类中实现,而不能在面板子类中实现。在这种情况下,我推荐另一种方法:

  1. 将 MyAbstractComponent 定义为接口(interface)。
  2. 重新定义您的子类。

    class MyTable extends JTable Implements MyAbstractComponent//这里重写 getSelectedRows()类 MyPanel 扩展 JPanel 实现 MyAbstractComponent

如果您的 MyAbstractComponent 中已经有一些方法实现,请考虑将此代码移动到由 MyTable 和 MyPanel 调用的帮助程序类中。由于历史原因,泛型在不使用此语言功能的环境(SWING)中并不是那么有用。

无论如何,如果您有兴趣了解有关泛型的更多信息,我推荐 Angelika Langers 教程和有关泛型的常见问题解答(只需 google)。

关于java - 从泛型类型参数(类型变量)扩展的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20885372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com