如何从我自己的自定义类加载器访问静态成员?

时间:2014-05-14 11:27:11

标签: java dynamic static classloader

我已经创建了自己的自定义类加载器,用于将类加载到JVM。我可以使用以下代码访问非静态成员

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

但我不知道访问已加载类的静态memebrs的过程。请为此问题提供解决方案。

2 个答案:

答案 0 :(得分:1)

如果您有静态类成员,则只需从类Class.myStaticMemeber中调用即可访问它们。静态成员也称为类成员,因为您可以直接从类中调用它们。当然你也可以使用实例调用它们,例如cls.myStaticMember,但是你应该记住,在一个地方更改静态成员的值会对你调用该静态成员的所有地方进行更改。

答案 1 :(得分:0)

// 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");

如果该方法是私人使用getDeclaredMethod()而不是getMethod()。并在方法对象上调用setAccessible(true)

for static methods we can use null as instance of class