从方法中获取类名

时间:2010-07-14 16:24:36

标签: java junit

我想在方法中引用Class的名称。在下面的示例中,我希望打印出TestSuite。我可以放CarsTestSuite.class.getName(),但我想使用该方法获取类名,以便我永远不必编辑它。解决方案将找到方法的类而不是我自己填写它。

public class TestSuite extends TestCase {

    public static void testOne() {
        System.out.println(<want TestSuite to be here>);

4 个答案:

答案 0 :(得分:6)

this.getClass().getCanonicalName()this.getClass().getName()

您的方法是静态的,所以这不起作用。它需要是静态的吗?

答案 1 :(得分:0)

你不能在静态方法中这样做。在非静态方法中,您可以调用getClass(),但在静态方法中,方法的类永远不会更改,因此类(及其名称)只能在TestSuite.class中静态访问。

答案 2 :(得分:0)

我确实需要它是静态的,因为在另一个类中我称之为该类。所以如果我这样做

TestSuite.testOne();

在另一个类中,除非我将testOne()声明为static,否则不会让我这样做。

答案 3 :(得分:0)

您可以使用以下事实:异常的堆栈跟踪包含有关第一个元素中的当前类和方法的信息。当我想记录当前的类名时,我使用了这样的构造:

new Exception().getStackTrace()[0].getClassName()

同样,您也可以检索当前方法名称(StackTraceElement.getMethodName()