我想要一个Class对象,但我想强制它所代表的任何类来扩展A类和B类。 我能做到
<T extends ClassA & ClassB>
但是不可能从这两个类扩展,有没有办法做到这一点?
答案 0 :(得分:4)
在java中,你不能拥有一个从两个类扩展的类,因为它不支持多重继承。你能拥有的是这样的:
public class A
...
public class B extends A
...
public class C extends B
...
在通用签名中,您可以指定T
必须延长C
:<T extends C>
。
您可以查看Default Methods
(如果您正在使用Java 8),它基本上是在接口中声明的方法,而在Java中,类可以实现多个接口。
答案 1 :(得分:0)
Java没有多重继承作为设计决策,但您可以实现多个接口。
从Java 8开始,这些接口可能有实现。
要使用多个类,还有其他模式:
如果父类纯粹是针对该子类,但处理完全不同的方面,因此将它们分开,则将它们放在一个人工层次结构中。我承认这样做了一次。
使用委托;复制API和委托。
使用查找/发现机制进行非常动态的行为。
公共T查询(Class Klazz);
这需要API更改,但是会解开类,并且是动态的。
答案 2 :(得分:0)
这个问题的一个简单方法是继承。
public class A { // some codes }
public class B extends A { }
<T extends A>