以下编译错误对我来说毫无意义,我希望有人能够阐明这些错误:
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
对象。