如果该方法的arg是在编译时不在类路径中的类,则使用反射获取声明的方法

时间:2014-01-26 02:16:59

标签: java reflection

Method _loadPlayer = PokeballManager.class.getDeclaredMethod(
        "loadPlayer", Class.class);// loadPlayer(EntityPlayerMP)

方法是loadPlayer(EntityPlayerMP), EntityPlayerMP由父应用程序动态重新映射,在编译时在类路径中不可用, 如果没有在编译时提供类,我将如何获得此方法?

1 个答案:

答案 0 :(得分:3)

你需要做一些事情,比如调用Class.forName(fqn)来获取Class的{​​{1}}对象,然后将结果对象作为fqn的第二个参数传递。

(假设getDeclaredMethodfqn的完全限定类名,表示为EntityPlayerMP。)


然而,令我感到震惊的是,创建一个静态编译的接口String作为动态EntityPlayerAPI类(或类)的API会更清晰。然后将EntityPlayerMP方法重新声明为:

loadPlayer

这可以让你至少摆脱一些反思。