Re: Wrapper for multiple instanceof
Recently I have been trying to do a multiple instanceof and thought it
would be better to write a function than do those ugly || with
Most instanceof's can be replaced with good OOP design.
public class MyInstance
public static boolean check(Object obj, String...classes) throws
boolean result = false;
for(String str : classes)
Class c = Class.forName(str);
result = result | (obj instanceof c);
This idiom is a red flag that polymorphism should be used instead.
Define an interface, I'll call it "DoesSomething", with a method, say,
public interface DoesSomething
public void doSomething();
Then define implementing classes specific to your situation:
public class HelloWorld implements DoesSomething
private final String something;
public HelloWorld( String s )
something = s;
public void doSomething()
System.out.println( something );
In some client class you would have code like this:
DoesSomething doer = Factory.getDoesSomething();
// this factory method will deliver some implementation
// of DoesSomething depending on environment or data
Notice the client code doesn't "know" that doer is "really" a HelloWorld, or
some other implementing class. It just lets the object "know" what to do for
itself. No run-time type checking needed on your part.
This idiom is at the heart of object-oriented programming.