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