On Mon, 10 Apr 2023 04:28:34 GMT, Chen Liang <li...@openjdk.org> wrote:

> nobody actually trusts this contract

I guess not every place should not trust this contract.

Where should we distrust contracts and use defensive programming? For example, 
the constructor of `ArrayList` that accepts `Collection` should not trust the 
`toArray` method of unknown collections. Because if the implementation of 
toArray is incorrect, trusting its return value will cause errors may occur in 
other subsequent places, rather than during the call to the constructor.

But this dangerous situation does not occur with the join method, as it does 
not leak the results of `toArray` to other places. If the implementation of 
`toArray` is incorrect, then the `join` method is not correct for it. This 
phenomenon is reasonable and acceptable, as long as the error does not occur 
outside of the join method.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13383#issuecomment-1501384516

Reply via email to