从方法中获取类名
问题描述:
我想在方法中引用类的名称。在下面的例子中,我想要打印出TestSuite。我可以放CarsTestSuite.class.getName()
,但我想使用该方法来获取类名,这样我就不必编辑它。该解决方案将找到方法的类,而不是我自己加油吧。从方法中获取类名
public class TestSuite extends TestCase {
public static void testOne() {
System.out.println(<want TestSuite to be here>);
答
this.getClass().getCanonicalName()
或this.getClass().getName()
。
你的方法是静态的,所以这是行不通的。它需要是静态的吗?
答
你不能在静态方法中做到这一点。在非静态方法中,您可以调用getClass()
,但是在静态方法中,方法的类永远不会更改,因此类(以及其名称)只能以静态方式访问,并且在TestSuite.class
中。
答
我需要它是静态的,因为在另一类我称之为类。所以,如果我做
TestSuite.testOne();
在另一类,它不会让我这样做,除非我有testOne()声明为静态的。
答
您可以使用异常的堆栈跟踪由约在第一个元素当前的类和方法的信息的事实。我用这样的结构时,我想记录当前类名称:
new Exception().getStackTrace()[0].getClassName()
以同样的方式,你可以检索也当前的方法名称(StackTraceElement.getMethodName()
)
不,它不需要是静态的,上面的例子:this.getClass()。getName()工作。谢谢。 – 2010-07-14 16:34:08