以下编译错误对我来说毫无意义,我希望有人能够阐明这些错误:

static public void main(String args[]) throws ZipException, IOException
{
    File file = new File("C:\\temp");
    ZipFile zip_file = new ZipFile(file);
    Enumeration<ZipEntry> entries = zip_file.entries();
}

我收到以下错误:Type mismatch: cannot convert from Enumeration<capture#1-of ? extends ZipEntry> to Enumeration<ZipEntry>
为了编译上面的代码,我不得不替换entries声明以使用泛型<? extends ZipEntry>。为什么我必须这样做? ZipEntry不会扩展ZipEntry吗? (那不是虚幻的吗?)编译器为什么会抱怨呢?

如果有帮助,我正在将Java 7.03与Eclipse Indigo 64位一起使用。

最佳答案

ZipFile.entries()返回扩展的ZipEntry类型的枚举,但不限于ZipEntry本身,因此您需要使用:

Enumeration<? extends ZipEntry> entries = zip_file.entries();

这允许在JarEntry枚举中使用其他类型,例如ZipEntry对象。

08-06 16:55