所以,这听起来像个奇怪的问题,但我需要知道如何在Java反射的继承情况下获取子Class
的{{1}}对象
情况是这样的:我正在编写CraftBukkit插件,与CraftBukkit一起使用的Java插件,一个仅限服务器端的插件A.P.I.对于我的世界。目前,我正在制作一个应该像父母一样的插件"我写的所有其他插件。它包含大量额外有用的对象和实用程序。
插件中的一个类是一个名为Object
的Object类,我希望所有其他插件的所有主类都到myPlugin
。 (我知道对象名称不应该以小写字母开头,但小写字母" my"是我的CraftBukkit插件的商标。)
我希望这个extend
类做的事情之一就是能够处理加载插件的命令'数据。因此,当调用该命令时,我希望该插件基本上调用插件的主要类中的所有方法,这些方法以" load" 开头。
我知道如何搜索myPlugin
中所有以&#34开头的方法;加载"如果我可以检索Class
,但如果我尝试在Class
课程中调用getClass()
,则,我相信它只会返回{{1} }} myPlugin
而不是myPlugin
扩展的Class
。
那么,如何检索扩展Class
而不是myPlugin
类本身的Class
?
编辑:
我觉得我应该提到我已经考虑创建一个名为myPlugin
的{{1}}方法,该方法将返回Class并使每个插件添加此方法并返回其主类,但这是一个丑陋的修复我宁愿避免的。
答案 0 :(得分:2)
不,它是返回的子类名称,请考虑:
public class ClassOne {
}
public class ClassTwo extends ClassOne {
}
public class Test {
public void someMethod(ClassOne one) {
System.out.println(one.getClass().getName());
}
}
public class Main {
public static void main(String[] args) {
ClassTwo t = new ClassTwo();
Test tst = new Test();
tst.someMethod(t);
}
}
输出为:ClassTwo