当前位置:  开发笔记 > 编程语言 > 正文

枚举之间的区别<?扩展ZipEntry>和Enumeration <ZipEntry>?

如何解决《枚举之间的区别<?扩展ZipEntry>和Enumeration<ZipEntry>?》经验,为你挑选了1个好方法。

Enumeration <?之间有区别吗?扩展ZipEntry>和Enumeration ?如果是这样,有什么区别?



1> Jon Skeet..:

当你得到其中一个时,你可以做什么没有实际的区别,因为type参数只用在"输出"位置.另一方面,在你可以作为其中一个使用的方面有很大的不同.

假设你有一个Enumeration- 你无法将它传递给一个Enumeration作为其参数之一的方法.你可以把它传递给一个方法Enumeration.

当你有一个在输入和输出位置使用type参数的类型时更有趣 - List这是最明显的例子.以下是参数变化的三个方法示例.在每种情况下,我们都会尝试从列表中获取一个项目,然后添加另一个项目.

// Very strict - only a genuine List will do
public void Foo(List list)
{
    T element = list.get(0); // Valid
    list.add(element); // Valid
}

// Lax in one way: allows any List that's a List of a type
// derived from T.
public void Foo(List list)
{
    T element = list.get(0); // Valid
     // Invalid - this could be a list of a different type.
     // We don't want to add an Object to a List
    list.add(element);   
}

// Lax in the other way: allows any List that's a List of a type
// upwards in T's inheritance hierarchy
public void Foo(List list)
{
    // Invalid - we could be asking a List for a String.
    T element = list.get(0);
    // Valid (assuming we get the element from somewhere)
    // the list must accept a new element of type T
    list.add(element);
}


有关详细信息,请阅读:

泛型的Java语言指南

Java泛型教程(PDF)

Java泛型FAQ - 特别是关于通配符的部分

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有