实现定义为接口的泛型类

时间:2016-11-07 08:44:23

标签: java android generics

我正在尝试执行以下操作:

public abstract class BaseActivity<S extends BaseDrawer> extends AppCompatActivity implements S{
...
}

其中BaseDrawer定义为:

public interface BaseDrawer {
    boolean showWait();
    boolean hideWait();
}

但是在“implements S”中给出了“预期接口”的错误。如果S扩展了接口,则意味着S也是一个接口,因此没有理由出现此错误。我是对的吗?

2 个答案:

答案 0 :(得分:1)

你不对。
这个错误是有原因的。 S可能不是一个接口,但可能是一个已经实现了接口的类 如果我们假设S是一个接口,那么谁知道哪个方法已添加到该接口,除了BaseDrawer中定义的方法之外?谁可能知道BaseActivity的子类在不抽象时必须实现哪些方法?

答案 1 :(得分:0)

泛型定义中的扩展与类型层次结构不同。在类型层次结构中,extends只能在类扩展类或接口扩展接口中使用,但在泛型定义中,extends可用于引用类或接口,因此S可以是它们两者。

你不能在类定义中使用泛型类型。