gpt4 book ai didi

扩展参数类/接口(interface)的java基类

转载 作者:行者123 更新时间:2023-12-02 07:21:34 24 4
gpt4 key购买 nike

我有一些基类 Entity 。我想允许Entity的用户创建 Entity 的实例扩展一些给定的父类(super class) T (就好像 Entity 的声明是 Class Entity extends T )。我不知道 T 实际上是什么,所以我想要 Entity在这方面是模块化的。如果那不可能,我可以接受 Entity也实现给定的接口(interface) T。

诸如public class Entity<T> extends T之类的东西和public class Entity<T> implements T不工作。 (“不能将类型参数 T 作为父类(super class)型引用”)。

所以我的问题是:

1)这是否可以在java中实现?其他语言?

2)如果是这样,怎么做?

3)通常当java遇到这样的障碍时,这意味着我的设计有问题,那么你将如何创建这个功能(我想我正在寻找的基本上是来自Entity和T的多重继承,这可以是完成了吗?)。

编辑:澄清 - 我想实现 mixin类型行为,同时对调用者的要求尽可能少(创建 T 的子类,将调用委托(delegate)给 Entity 实例会对调用者要求太多)。没有其他方法可以做到这一点吗?

最佳答案

Java不支持多重继承;给定的类不能是多个的直接子类。

但是,如果实体接口(interface),则可以使用交集边界来实现。

例如,编写一个接受 SomeClass 的子类(不一定是直接子类)实例并实现 Entity 的方法:

public <T extends Entity & SomeClass> void doSomething(T t) {
}

关于扩展参数类/接口(interface)的java基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154436/

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