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.

有帮助吗?

解决方案 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

其他提示

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top