【问题标题】:do generic type param shadow reference types? (java)泛型类型参数阴影引用类型? (爪哇)
【发布时间】:2017-06-10 17:59:34
【问题描述】:

假设我们有以下场景:

public class SomeClass {

}

现在我们有了一个类型参数为SomeClass 而不是T 的泛型类。

public class GenericClass <SomeClass> {
    List<SomeClass> list;

    public GenericClass() {
         list = new ArrayList<>();
    }

    public void add(SomeClass obj) {
         list.add(obj);
    }
}

类型参数SomeClass 是否会在整个GenericClass 中隐藏引用数据类型SomeClass

【问题讨论】:

    标签: java generics type-parameter reference-type shadowing


    【解决方案1】:

    是的。在这种情况下,这是一个 name shadow。您仍然可以使用完全限定的类名来消除歧义(只要您使用包,就应该这样做)。此外,这是为泛型类型使用常规短类型名称的一个很好的论据。

    【讨论】:

    • 扩展:通常我们使用单个大写字母作为类型参数。常见:Tfor "type",后跟U, V, ... 多个参数,&lt;K, V&gt; for key-value pairs, E for "element", &lt;L, R&gt; for左右对。
    • 也是常见的,上限类型的首字母,例如,&lt;N extends Node&gt;
    【解决方案2】:

    总之——是的,它会影响SomeClass。不过,您仍然可以使用完全限定的类名(例如,com.exmaple.SomeClass)来引用它。

    【讨论】:

    • 谢谢。不幸的是,我无法将两者(您的和 elliotts)都标记为正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多