Page 1 of 1

About Question enthuware.ocpjp.v11.2.3359 :

Posted: Mon Jan 06, 2025 8:37 am
by jorgeruiz
Hi,
The explanation of the 2nd option "Device should implement Closeable and override close() method." is reasonable. Basically is a matter of how the response or question is using "should" and not "may".

But, there is no explanation on why the "Device should implement AutoCloseable..."
Is it because is more generic than Closeable?
Because its close method is not required to be idempotent?

Would you please clarify?

Re: About Question enthuware.ocpjp.v11.2.3359 :

Posted: Mon Jan 06, 2025 9:05 am
by admin
It should implement AutoCloseable because that is the minimum that is required for a Device to be used in a try-with-resources statement. Without implementing AutoCloseable the given code will not compile.

Closeable is not required.

Re: About Question enthuware.ocpjp.v11.2.3359 :

Posted: Mon Sep 08, 2025 2:34 am
by Sophia2005
jorgeruiz wrote:
Mon Jan 06, 2025 8:37 am
Hi, Stickman Hook
The explanation of the 2nd option "Device should implement Closeable and override close() method." is reasonable. Basically is a matter of how the response or question is using "should" and not "may".

But, there is no explanation on why the "Device should implement AutoCloseable..."
Is it because is more generic than Closeable?
Because its close method is not required to be idempotent?

Would you please clarify?
Would it make sense to always choose Closeable when designing a class that deals with streams, sockets, or files, given its narrower, IO-specific semantics?

Re: About Question enthuware.ocpjp.v11.2.3359 :

Posted: Mon Sep 08, 2025 3:07 am
by admin
No, as you said Closeable is too IO specific. Streams are not necessarily IO specific.

AutoCloseable is meant for anything that can be closed and so that is what should be used.

There is no scenario where Closeable is preferrable to AutoCloseable.