繁体   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