我正在尝试执行以下操作:
public abstract class BaseActivity<S extends BaseDrawer> extends AppCompatActivity implements S{
...
}
其中BaseDrawer定义为:
public interface BaseDrawer {
boolean showWait();
boolean hideWait();
}
但是在“implements S”中给出了“预期接口”的错误。如果S扩展了接口,则意味着S也是一个接口,因此没有理由出现此错误。我是对的吗?
答案 0 :(得分:1)
你不对。
这个错误是有原因的。
S
可能不是一个接口,但可能是一个已经实现了接口的类
如果我们假设S
是一个接口,那么谁知道哪个方法已添加到该接口,除了BaseDrawer
中定义的方法之外?谁可能知道BaseActivity
的子类在不抽象时必须实现哪些方法?
答案 1 :(得分:0)
泛型定义中的扩展与类型层次结构不同。在类型层次结构中,extends只能在类扩展类或接口扩展接口中使用,但在泛型定义中,extends可用于引用类或接口,因此S可以是它们两者。
你不能在类定义中使用泛型类型。