2012-07-06 49 views
3

我想了解一些關於ArrayObjectArrayIterator爲什麼要實現已經相互擴展的兩個接口?

ArrayObject:這個類實現了IteratorAggregateTraversable接口。由於IteratorAggregate自身延伸Traversable本身,爲什麼ArrayObject實現兩者,它只能實現IteratorAggregate

ArrayIterator:如上所述,這個類實現既IteratorTraversable其中Iterator延伸。

爲什麼這些類實現兩個接口,當他們可以逃脫實現一個延伸Traversable

+3

我懷疑這些鏈接只是爲了讓手冊更清晰,更具可穿透性*(ha) - 在您的案例中具有諷刺意味的是,這似乎具有完全相反的效果。我認爲你是正確的,可以更正確地說他們分別實現了'IteratorAggregate'和'Iterator'接口。 – DaveRandom 2012-07-06 16:17:42

+0

...雖然[看起來](http://codepad.viper-7.com/r4FfNY),你可以用這種看似矛盾的方式編寫你的代碼,PHP不會抱怨它。 – DaveRandom 2012-07-06 16:24:01

+0

我不認爲Java會抱怨,但沒有測試它。這就像聲明未經檢查的異常一樣:多餘但不是錯誤。 – 2012-07-06 16:26:13

回答

1

按照SPL source code,ArrayObject的不直接實現Traversable

class ArrayObject implements IteratorAggregate, ArrayAccess, Countable 
{ 
    ... 
} 

此相匹配的SPL documentation。我相信DaveRandom是正確的。

+0

我看了看鏈接,它看起來像ArrayObject和ArrayIterator類都不直接實現Traversable接口, – 2012-07-06 16:36:13

相關問題