Getting a field value in the calling class
Hi
I have written two classes hoping to find out in run time the value of
a field in the calling class. But my attempt resulted in a run time
error. Anyone could help fix my code or suggestion? Thank you!
Jan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class GetCallingClass {
void printCallingClassInfo() throws ClassNotFoundException,
SecurityException, NoSuchFieldException, IllegalArgumentException,
IllegalAccessException {
StackTraceElement[] ste = new Throwable().getStackTrace();
if (ste.length > 1) {
System.out.println(ste[1].getClassName()); // print CallClass
System.out.println(CallClass.class.getField("m").toGenericString());
Class c = ste[1].getClass();
Integer m2 = (Integer)
CallClass.class.getField("m").get(ste[1].getClass());
System.out.println("m2 = "+m2);
System.out.println(this.getClass().getGenericSuperclass()
.getClass().getName()); // print java.lang.Class
}
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
public class CallClass {
public int m = 0;
public static void main(String[] args) throws SecurityException,
ClassNotFoundException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException {
GetCallingClass c = new GetCallingClass();
c.printCallingClassInfo();
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~