iterator中的next()为什么要强转?

我查API看到next()返回的类型<E>,这不就是返回对象类型么,怎么在上题中还对it.next()进行person类型强转?求指点!谢谢(能通俗易懂的讲解一下最好)

因为你的集合和迭代器没有定义泛型,next()默认会返回Object,所以需要强转,两个地方加上泛型就OK,HashSet<Person> hs = new HashSet<Person>();Iterator<Person> it = hs.iterator();

求个采纳。广告:5044群5871自学的进追问

没看懂你说的啊,next()默认返回Object,那么强转(Person)it.next(); 这个强转的意思不就是强转成Object么?(难道是我理解错了?) 和默认的返回类型一样,那么干嘛还要加这个强转?

追答

默认是object,强转(Person)it.next();是强制转换成Person

追问

最关键的问题来了:Person难道不是Object吗?(我理解的是Person就是Object啊)这点是困扰我的地方,看图中题目似乎Person就是啊,大神请详细解答下,谢谢

追答

person是object,但是object不一定是person啊,所以你不能拿一个Person的引用去接收一个Object 的next()啊
广告下5044群5871自学的

温馨提示:内容为网友见解,仅供参考
无其他回答