Question

I have created my own custom class loader for loading a class to JVM. i can access the non static members using following code

MyLoader c=new MyLoader();
Class cls=c.loadClass("Hello");
Object obj=cls.newInstance()
cls.getMethod("show").invoke(obj);

But i don't know the procedure for accessing a static memebrs of a loaded class. Kindly provide a solution for this problem.

Was it helpful?

Solution 2

// String.class here is the parameter type, that might not be the case with you
Method method = clazz.getMethod("methodName", String.class);
Object o = method.invoke(null, "whatever");

In case the method is private use getDeclaredMethod() instead of getMethod(). And call setAccessible(true) on the method object.

for static methods we can use null as instance of class

OTHER TIPS

If you have static class members, you can access them just exactly calling from Class Class.myStaticMemeber. Static members also are called Class member, as you can call them directly from the class. Of course you can call them using the instance too, such as cls.myStaticMember, but you should remember that changing value of static member in one place will make this change to all places where you have called that static member.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top