Java 从方法中获取类名

Java 从方法中获取类名,java,junit,Java,Junit,我想在方法中引用类的名称。在下面的示例中,我希望打印TestSuite。我可以放置CarsTestSuite.class.getName(),但我想使用该方法获取类名,这样我就不必编辑它了。解决方案将找到方法的类,而不是我自己填充它 public class TestSuite extends TestCase { public static void testOne() { System.out.println(<want TestSuite to be her

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

public class TestSuite extends TestCase {

    public static void testOne() {
        System.out.println(<want TestSuite to be here>);
公共类TestSuite扩展了TestCase{
公共静态void testOne(){
System.out.println();
this.getClass().getCanonicalName()
this.getClass().getName()

您的方法是静态的,因此无法工作。它需要是静态的吗?

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


您的方法是静态的,因此无法工作。它需要是静态的吗?

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

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

中,我确实需要它是静态的,因为在另一个类中,我调用该类

TestSuite.testOne()


在另一个类中,它不允许我这样做,除非我将testOne()声明为静态。

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

TestSuite.testOne()


在另一个类中,除非我将testOne()声明为静态,否则它不会允许我这样做。

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

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

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

您可以使用这样一个事实,即异常的stacktrace包含关于第一个元素中当前类和方法的信息。我在记录当前类名时使用了这样的构造:

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

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

否,它不需要是静态的,上面的示例:this.getClass().getName()有效。谢谢。不,它不需要是静态的,上面的示例:this.getClass().getName()有效。谢谢。