B
brian.vanheesch
Consider the following code:
class A
{
}
class B extends A
{
}
class C
{
public void foobar(A a)
{
}
}
....
Object b=Class.forName("B").newInstance();
Class clazzA=Class.forName("A");
Class clazzC=Class.forName("C");
Object c=clazz.newInstance();
Method m=clazzC.getMethod("foobar", clazzA);
m.invoke(c, b);
This will result in an exception, since b is not of type A (the extend
is not considered). Anyway around this? Clearly typecasting will do,
but can't figure out how to typecast using reflection if you only have
the class string "A" as a reference of the target typecast class.
Also the private/public/protected modifier for the method (doSomething,
in this example) MUST be public (even if reflection code lives within
the class C), any around this?
PS sorry about the cheezy class names, my client does not allow
specific example code to be posted to the web.
bvh
class A
{
}
class B extends A
{
}
class C
{
public void foobar(A a)
{
}
}
....
Object b=Class.forName("B").newInstance();
Class clazzA=Class.forName("A");
Class clazzC=Class.forName("C");
Object c=clazz.newInstance();
Method m=clazzC.getMethod("foobar", clazzA);
m.invoke(c, b);
This will result in an exception, since b is not of type A (the extend
is not considered). Anyway around this? Clearly typecasting will do,
but can't figure out how to typecast using reflection if you only have
the class string "A" as a reference of the target typecast class.
Also the private/public/protected modifier for the method (doSomething,
in this example) MUST be public (even if reflection code lives within
the class C), any around this?
PS sorry about the cheezy class names, my client does not allow
specific example code to be posted to the web.
bvh