2016-11-07 182 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可以是它們兩個。

而你不能在類定義中使用泛型類型。