以下编译错误对我来说毫无意义,我希望有人能够阐明:
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();
这允许在 ZipEntry
枚举中使用其他类型,例如 JarEntry
对象。
关于java - Java 中泛型的未知编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13095840/