java - 枚举被 JVM 视为迭代器

标签 java iterator java-7 enumeration

我想知道为什么java.util.Enumeration被JVM认为是java.util.Iterator?他们没有继承关系。

public interface Enumeration<E> {
....
}

public interface Iterator<E> {
...
}

Hashtable<String, Object> hashTable = new Hashtable<>();
hashTable.put("key1", 1);
hashTable.put("key2", 2);
hashTable.put("key3", 3);
Enumeration<Object> enumeration = hashTable.elements();
System.out.println(enumeration instanceof Enumeration);
System.out.println(enumeration instanceof Iterator);// why true here?

最佳答案

instanceof运算符将对象与指定的类型进行比较。

自返回Enumarator实现类型Iterator ,条件变为true

 private class Enumerator<T> implements Enumeration<T>, Iterator<T>

这里是 HashTable's Enumerator<T> 的源代码定义。

关于java - 枚举被 JVM 视为迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32520223/

相关文章:

基于java的音乐播放器仅识别.wav文件格式

security - JRE 1.7 漏洞

java - 在java中导入用户定义的类

类结构中的 PHP 内存泄漏

java - 编译错误 "incompatible types"

python - 如何将可迭代对象转换为流?

java - Unicode 字符变成问号

java - 多 bean 服务中一个服务 bean 的 Cxf 故障拦截器

java - Apache Commons 配置验证属性文件

java - 一个类有没有可能实现两个接口(interface),每个接口(interface)都包含一个具有相同方法头的方法?