我需要在java中通过反射调用类似下面的函数:
MyPrivateClass.getDefault("test").hitCurrentSetting(true);
我认为我可以像这样实现这个但是它没有工作并且抛弃我而不是抛出异常:
Class<?> c = Class.forName("com.xyz.MyPrivateClass"), instance = null;
instance = (Class<?>) c.getMethod("getDefault", String.class).invoke(null, "test");
Method method = instance.getMethod("hitCurrentSetting", boolean.class);
method.invoke(null, true);
关于如何实现这一点的任何想法?
答案 0 :(得分:2)
试试这个:
Class<?> firstClass = Class.forName("com.xyz.MyPrivateClass");
Object firstCallResult = firstClass.getMethod("getDefault", String.class).invoke(null, "test");
Class<?> secondClass = firstCallResult.getClass();
Object secondCallResult = secondClass.getMethod("hitCurrentSetting", boolean.class).invoke(firstCallResult, true);