[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: dynamic vs. static typing

On 19 Nov 2003, at 8:01, Ken Shan wrote:

>> What if I want to send a message to all the objects in the list that
>> respond to a method, but not to those that don't? For example, let's
>> say I have a list of things in my house and I want to send a turnOff
>> message to everything that can be turned off.
> As Anton van Straaten explained beautifully, all the objects in this
> case respond to some message like "turn off if you can", or "can you
> turn off?".

...but that's a pretty bad idea in general. When you say this...

if (object.turnOffSupported()) {

...there is a chance that the object is replaced in another thread 
between the check and the actual call. The better solution is this...

try {
} catch (OperationNotAvailableException e) {

...because now you have (more or less) exactly one point in time at 
which the check and the invocation are performed simultaneously. [1]

BTW, this is what a DT language gives you for free. ;)


[1] And _please_ make this an unchecked exception. Checked exceptions 
suck very badly.

Tyler: "How's that working out for you?"
Jack: "Great."
Tyler: "Keep it up, then."