java - Java 中迭代器变量前面的括号是什么?

标签 java syntax

    for (Iterator i = guitars.iterator(); i.hasNext(); )
    {
        Guitar guitar = (Guitar)i.next();
        if (guitar.getSerialNumber().equals(serialNumber))
        {
            return guitar;
        }
    }

我无法理解 (Guitar)i.next() 正在做什么。看起来好像 Guitar 被传递给了函数 (...) 但我猜测并且没有任何线索。为这种结构制定搜索查询也不容易,因此请原谅可能出现的重复问题。

最佳答案

这是一份选角声明。原因是 i.next() 返回一个 Object,但您知道它将是一个 Guitar,因此您告诉编译器:

"Hey, compiler, I know it's going to be a Guitar, trust me."

执行此操作的巧妙方法是使用泛型。您基本上在做同样的事情,但它更干净:

for (Iterator<Guitar> i = guitars.iterator(); i.hasNext(); )
{
     Guitar guitar = i.next();
     //...
}

关于java - Java 中迭代器变量前面的括号是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23969479/

相关文章:

java - 随机数不断变化

java - 随机数学问题生成器不遵循 while 循环

mysql - 字段列表中的列 `D1` 不明确

java - 如何通过java中的搜索正确请求与请求参数的映射?

java - Spring Cloud Stream 消息 JSON 转换不起作用

java - 与 ForkJoinPool 兼容的 Hibernate ThreadLocal session 管理?

c - C语言中 '=='是什么意思?

Javascript变量声明,为什么这是合法的?

字符串剥离后的 Python 不需要的空行

svn - 日期格式为 "svn: Syntax error in revision argument"