Java 类别<;?实现X>;:如何定义作为此实例的变量
我有很多不同的课程 有些实现了X,而另一些则没有 我现在需要访问实现X的此类类的一个特定实例,并且还希望避免许多不必要的强制转换 我不能简单地说Java 类别<;?实现X>;:如何定义作为此实例的变量,java,class,casting,hierarchy,entities,Java,Class,Casting,Hierarchy,Entities,我有很多不同的课程 有些实现了X,而另一些则没有 我现在需要访问实现X的此类类的一个特定实例,并且还希望避免许多不必要的强制转换 我不能简单地说MyClass实例 我也不能使用X实例,因为我确实需要访问该类的方法 我也不能让一个OtherClass扩展MyClass实现X,因为我的大多数类已经在扩展MyClass,但我不想让我的所有子类都实现X 因此,我正在寻找一种定义变量类型的方法,这种方法可以编写如下内容: MyClass您可以使用具有多个边界的泛型: <T extends MyCla
MyClass实例出于类型安全原因,代码>
我也不能使用X实例
,因为我确实需要访问该类的方法
我也不能让一个OtherClass扩展MyClass实现X
,因为我的大多数类已经在扩展MyClass,但我不想让我的所有子类都实现X
因此,我正在寻找一种定义变量类型的方法,这种方法可以编写如下内容:
MyClass您可以使用具有多个边界的泛型:
<T extends MyClass & X> void someFunction(T t){
}
void someFunction(T){
}
这将强制执行someFunction
的参数将是MyClass
和X
的子类型,并允许您访问MyClass
和X的成员,因为我确实需要访问该类的方法。那么您最好的选择是MyClass实例
。什么是“清晰的理由”意味着你不能这样做?@AndyTurner想象其他人会加入代码库。(S) 他可能会将未实现X的MyClass实例分配给变量实例,这将导致错误。此外,我还需要访问X中的方法。啊,所以与清晰度无关吗?:)(清晰度=>可读性;你说的是类型安全)@AndyTurner Riight,对不起,把这两个搞混了!