java泛型,如何从两个类扩展?

时间:2014-06-26 06:16:32

标签: java generics

我想要一个Class对象,但我想强制它所代表的任何类来扩展A类和B类。 我能做到

<T extends ClassA & ClassB>

但是不可能从这两个类扩展,有没有办法做到这一点?

3 个答案:

答案 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开始,这些接口可能有实现。

要使用多个类,还有其他模式:

  1. 如果父类纯粹是针对该子类,但处理完全不同的方面,因此将它们分开,则将它们放在一个人工层次结构中。我承认这样做了一次。

  2. 使用委托;复制API和委托。

  3. 使用查找/发现机制进行非常动态的行为。

    公共T查询(Class Klazz);

    这需要API更改,但是会解开类,并且是动态的。

答案 2 :(得分:0)

这个问题的一个简单方法是继承。

public class A { // some codes }

public class B extends A { }

<T extends A>