我想在方法中引用Class的名称。在下面的示例中,我希望打印出TestSuite。我可以放CarsTestSuite.class.getName()
,但我想使用该方法获取类名,以便我永远不必编辑它。解决方案将找到方法的类而不是我自己填写它。
public class TestSuite extends TestCase {
public static void testOne() {
System.out.println(<want TestSuite to be here>);
答案 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()
)