2016-11-07 101 views
2

我尝试做以下泛型类:实现定义的接口

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

其中BaseDrawer被定义为:

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

但给我的错误“接口这里期待”在“执行S”。如果S扩展一个接口,意味着S也是一个接口,所以没有理由出现这个错误。我对吗?

+0

您无法使用泛型类型实现 – Rogue

+0

您想使用泛型类型接口达到什么目标?不清楚 –

回答

1

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

0

通用定义中的扩展不同是类型层次结构。在类型层次结构中,extends只能用在类extends类或接口extends接口中,但在泛型定义中,extends可以用来引用类或接口,所以S可以是它们两个。

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