【发布时间】:2013-01-04 09:30:14
【问题描述】:
我有一些基类Entity。我想允许Entity 的用户创建扩展某些给定超类T 的Entity 实例(好像Entitys 声明是Class Entity extends T)。我不知道 T 实际上是什么,所以我希望 Entity 在这方面是模块化的。如果这不可能,我也可以 Entity 实现给定的接口 T。
public class Entity<T> extends T 和 public class Entity<T> implements T 之类的东西不起作用。 (“不能将类型参数 T 称为超类型”)。
所以我的问题是:
1) 这完全有可能在 java 中实现吗?其他语言?
2) 如果是这样,怎么办?
3) 通常当 java 设置这样的障碍时,这意味着我的设计有问题,那么你将如何创建这个功能(我想我正在寻找的基本上是从 Entity 和 T 的多重继承,这可以是完成了吗?)。
编辑:澄清 - 我想实现 mixin 类型的行为,同时尽可能少地要求调用者(创建 T 的子类,它将调用委托给 Entity 实例将需要调用者太多)。有没有其他方法可以做到这一点?
【问题讨论】:
-
是的,这在 Java 中没有意义。一个类扩展一个任意类意味着什么?您在寻找 mixin 类型的行为吗?
-
在问题 1 中,您为什么要问“[这可能在] 其他语言中吗?”。这不是真的要成为
Java的问题吗? -
我会尝试将您要注入的任何超类所需的最少属性和方法的接口组合在一起,然后让
Entity实现给定的接口。如果您需要比这更复杂的东西,那么您可能需要建立某种工厂。 -
@JackManey 我不是在建立工厂,只是不确定如何去做。我不能要求对超类进行更改,也不能提前知道它们。我只想能够创建一个超类的实例,它也具有我的具体
Entitys 功能。 -
@OliCharlesworth 是的,我想实现 mixin 类型的行为,同时尽可能少地要求调用者(创建一个 T 的子类,它将调用委托给
Entity实例将需要调用者太多)。有没有其他方法可以做到这一点?