【问题标题】:java bounded generic type definitionjava有界泛型类型定义
【发布时间】:2008-12-07 21:58:48
【问题描述】:

以下类型定义有什么区别

<E extends Number>

<? extends Number>

干杯, 唐

【问题讨论】:

    标签: java generics


    【解决方案1】:

    这个版本:

    <? extends Number> 
    

    可以出现在非泛型方法/类型中,它基本上意味着“我不在乎类型是什么,只要它派生自Number。我不会真正使用该类型,我只需要它是合适的。”

    这个版本:

    <E extends Number>
    

    要求 E 是类型参数。它允许您做更多事情(例如,稍后创建一个ArrayList&lt;E&gt;),但是当您不需要它们时,额外的类型参数会使事情变得更加复杂。

    【讨论】:

    • 更正式地说,是不是说第二个是正式的类型参数定义,而第一个只是一个参数定义?
    • 只有在需要引用类型(通过“别名”E)时才应该使用第二个定义,对吗?
    • 我不想在没有咨询规范的情况下发表第一条评论(我马上就要睡觉了)。不过,第二条评论似乎是合理的。查看 Josh Bloch 在 Effective Java 中所说的话——他可能已经介绍过了 :)
    • 其实我在阅读Effective Java时就想到了这个问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多