Assuming I have the following code:
public boolean doesElfLikeIt ( Monster mon )
{
if ( mon instanceof Orc ) { return false; }
if ( mon instanceof Elf ) { return true; }
}
Is this a good programming approach or should I rather go for something like this:
public boolean doesElfLikeIt ( Monster mon )
{
if ( mon.getType() == Orc.type ) { return false; }
if ( mon.getType() == Elf.type ) { return true; }
}
The reason why I’m asking this is because I hear a lot about how evil the instanceof comparison is, however I find it useful.
Neither. What you really should be doing is something like: