簡體   English   中英

有界通用接口的通用接口

[英]generic interface with bounded generic interface

說我有泛型接口:

public interface MyContainer<E>{
     E someMethod();
}

現在,我有另一個接口,希望它像這樣:

public interface MyService<T extends MyContainer<E>>{
     // someMethod goes here   
}

它當然不會編譯,只會這樣編譯:

public interface MyService<E,T extends MyContainer<E>>{
     // someMethod goes here   
}

但我不喜歡它,因為MyService接口並不關心E,它只關心其類型參數擴展了MyContainer。 有什么想法如何解決嗎?

但我不喜歡

開始喜歡它。

必須在引用它們之前聲明類型參數,就像在使用它們之前聲明變量一樣。

如果您關心E的類型,則必須聲明它。 如果用T extends MyContainer<E>引用MyService T extends MyContainer<E>MyService接口確實關心E

如果您的界面根本不關心E是什么,那么您可以使用無界通配符。

public interface MyService<T extends MyContainer<?>>

但是,此接口的每個實現都需要完全像這樣重新聲明T或提供完全滿足此約束的類型參數。 您將無法擺脫?

我可以看到,聲明E並按原樣使用它是最好的解決方案。 不必鍵入額外的E,沒什么大問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM