如何检索Java反射的子类?

时间:2014-04-06 22:40:39

标签: java class inheritance reflection parent

所以,这听起来像个奇怪的问题,但我需要知道如何在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并使每个插件添加此方法并返回其主类,但这是一个丑陋的修复我宁愿避免的。

1 个答案:

答案 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