Java中迭代器变量前面的括号是什么?
我不明白我在做什么。看起来好像Java中迭代器变量前面的括号是什么?,java,syntax,Java,Syntax,我不明白我在做什么。看起来好像吉他被传递给了一个函数(…),但我猜,没有任何线索。也不容易为这种结构制定搜索查询,因此请原谅可能出现的重复问题。这是一个决定性的陈述。原因是i.next()返回一个对象,但您知道它将是一个吉他,因此您告诉编译器: “嘿,编译器,我知道这将是一把吉他,相信我。” 实现这一点的巧妙方法是使用泛型。你基本上也在做同样的事情,但它更干净: for (Iterator i = guitars.iterator(); i.hasNext(); ) {
吉他
被传递给了一个函数(…)
,但我猜,没有任何线索。也不容易为这种结构制定搜索查询,因此请原谅可能出现的重复问题。这是一个决定性的陈述。原因是i.next()
返回一个对象
,但您知道它将是一个吉他
,因此您告诉编译器:
“嘿,编译器,我知道这将是一把吉他
,相信我。”
实现这一点的巧妙方法是使用泛型。你基本上也在做同样的事情,但它更干净:
for (Iterator i = guitars.iterator(); i.hasNext(); )
{
Guitar guitar = (Guitar)i.next();
if (guitar.getSerialNumber().equals(serialNumber))
{
return guitar;
}
}
for(迭代器i=guitars.Iterator();i.hasNext();)
{
吉他=i.next();
//...
}
这是一个决定性的声明。原因是i.next()
返回一个对象
,但您知道它将是一个吉他
,因此您告诉编译器:
“嘿,编译器,我知道这将是一把吉他
,相信我。”
实现这一点的巧妙方法是使用泛型。你基本上也在做同样的事情,但它更干净:
for (Iterator i = guitars.iterator(); i.hasNext(); )
{
Guitar guitar = (Guitar)i.next();
if (guitar.getSerialNumber().equals(serialNumber))
{
return guitar;
}
}
for(迭代器i=guitars.Iterator();i.hasNext();)
{
吉他=i.next();
//...
}
(吉他)i.next()代码>是一个强制转换运算符。这在这里是必要的,因为i.next()
返回java.lang.Object
,但是您知道它是一个吉他
,并且您想要使用吉他
的属性
请注意,如果guitars
是一个泛型集合,则演员阵容将变得不必要,在这种情况下,迭代器可以正确键入:
for (Iterator<Guitar> i = guitars.iterator(); i.hasNext(); )
{
Guitar guitar = i.next();
//...
}
列出吉他=。。。
for(迭代器i=guitars.Iterator();i.hasNext();){
吉他吉他=i.next();//(吉他)i.next();
是一个cast操作符。在这里它是必需的,因为i.next()
返回java.lang.Object
,但是你知道它是一个吉他,你想使用Guiter
的属性
请注意,如果guitars
是一个泛型集合,则演员阵容将变得不必要,在这种情况下,迭代器可以正确键入:
for (Iterator<Guitar> i = guitars.iterator(); i.hasNext(); )
{
Guitar guitar = i.next();
//...
}
列出吉他=。。。
for(迭代器i=guitars.Iterator();i.hasNext();){
吉他=i.下一个();//
是对类guitart
的对象的强制转换,因为i.next()
以原始的迭代器返回对象
,但是编译器需要知道您使用了guitart
-obejct来使用guitart
-类特定的方法
是对类guitart
的对象的强制转换,因为i.next()
以原始迭代器返回对象
,但编译器需要知道您使用了guitart
-obejct来使用guitart
-类特定方法。您可以强制转换i.next(),正如其他人所说。我认为guitars
是一个列表,因此您也可以使用FOR-EACH循环来迭代它:
(Guitar)i.next();
正如其他人所说,您可以使用i.next()。我认为guitars
是一个列表,因此您也可以使用FOR-EACH循环来迭代它:
(Guitar)i.next();
您正在使用原始迭代器。在调用next()
时返回该对象。在不需要向下转换的地方使用泛型迭代器。您正在使用原始迭代器。在next()时返回该对象调用
。在不需要向下转换的地方使用泛型迭代器。我认为while
循环比for
循环更容易理解它。显式转换不再必要:)转换仍然完成,但在下一步()
方法。@Brajfor
-问题中也使用了循环。@MartijnCourteaux没错,Java泛型在很大程度上是一种“隐藏我的角色”游戏。我认为while
循环比for
循环更容易理解。显式强制转换不再必要:)强制转换仍然完成,但在下一步()
方法中。@Brajfor
-循环也被用于问题中。@MartijnCourteaux没错,Java泛型非常有用“隐藏我的施法”游戏。我认为while
循环比for
循环更容易理解。我认为while
循环比for
循环更容易理解。