这两种方法上泛型表达的意思是否一样?
示例一:
private static void printExtends(Collection<? extends Person> list) { }
示例二
public static <T extends Person> void printExtends1(Collection<T> list) { }
疑问:
我是否可以认为示例一和示例二要表达的意思是一致的,二者的区别如下,其他没有任何区别?
- 示例一:将参数的限定放在了形参上
- 示例二:将参数的限定放在了方法修饰符后面
示例三:
public static <T extends Person> void printExtends2(Collection<? extends Comparable<T>> list) { }
示例四:
public static <T extends Comparable<T>> void printExtends3(Collection<? extends Person> list) { }
疑问:
- 示例三和示例四,表示T既要是Person子类,也要是Comparable子类,两者表达的意思是否也是一样的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一和二实际运用上没有区别;
三或许可以,四是不对的(T没加到参数里,没有任何作用)。
要深入研究的话,可参阅Effective Java一书。