在不创建实例的情况下在类上列出公共方法

时间:2013-02-27 08:48:55

标签: java

我正在使用的测试框架有一种将测试添加到测试套件的相当奇怪的方法,如下所示:

public TestSuiteAll() {
    super("TestSuiteAll")

    this.addTest(new TestTypeOld("TEST_EXECUTION"));
    this.addTest(new TestTypeOld("TEST_COMPLETION_1"));
    this.addTest(new TestTypeOld("TEST_COMPLETION_2"));

    this.addTest(new TestTypeNew("TEST_NEW"));
}

其中“TEST_EXECUTION”是TestTypeOld类中要调用的函数的名称。

我真的不喜欢这种设计,但我坚持不懈。如何列出TestTypeOld中的所有函数,以便我可以添加所有这些函数?

我已经看到了一些类似这样的例子:

TestTypeOld testTypeOld = new TestTypeOld("");
Class testTypeOldClass = testTypeOld.getClass();
Method[] methods = testTypeOldClass.getMethods();

但这似乎真的很长。有没有其他方法可以在我不需要创建TestTypeOld的实例。

4 个答案:

答案 0 :(得分:2)

你应该可以这样做:

Method[] methods = TestTypeOld.class.getMethods();

以下是java.util.List的工作示例:

public static void main(String args[]) {
    Method[] methods = List.class.getMethods();
    for(Method method : methods) {
        System.out.println(method.getName());
    }
}

答案 1 :(得分:1)

你也可以这样做:

TestTypeOld.class.getMethods();

.class运算符检索表示给定类的Class实例。

答案 2 :(得分:1)

如何使用

Methods[] methods = TestTypeOld.class.getMethods();

然后您不必创建TestTypeOld的实例。

答案 3 :(得分:0)

使用Reflection Api 例如:

Methods[] methods = TestTypeOld.class.getMethods();