Re: Wrapper for multiple instanceof
 
getsanjay.sharma@gmail.com wrote:
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
repeated instanceofs'.
Most instanceof's can be replaced with good OOP design.
public class MyInstance
{
    public static boolean check(Object obj, String...classes) throws
Exception
    {
        boolean result = false;
        for(String str : classes)
        {
            Class c = Class.forName(str);
            result = result | (obj instanceof c);
            if(result) break;
        }
        return(result);
This idiom is a red flag that polymorphism should be used instead.
Define an interface, I'll call it "DoesSomething", with a method, say, 
"doSomething()":
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
   doer.doSomething();
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.
-- 
Lew