Search code examples
javadynamicclassloader

Accessing Methods and functions of a object whose class type is dynamically known


I have an object A1 of type A. I dynamically find that out , that object A1 is of type A. I now have a property say "Name" which I want to access from A1 , how do I do it ?

Now the biggest problem is that the object A1 can even be of type B. If it is of type B then I will have to obtain the value "Address". Now How I resolve this ?

Below code does the type check ,


public static void testing(Object A1, String s) s - Classtype
  {
      try{
          Class c = Class.forName(s);

          if( c.isInstance(A1)) // 
          {
              //Now I know that A1 is of the  type C. But I dont know what type 'c' is (whether type A or type B. Because Only then I can access the appropriate member.) Like I said, type A contain 'name' and type B contains address.
              // The access may not only be a member but also a method .
          }
      }catch (Exception e){ System.out.println(e);}
  }

Any pointers would help a lot . thanks


Solution

  • You can know the declared fields of class

     Class cls = Class.forName("MyClass");
     Field fieldlist[] = cls.getDeclaredFields();