2010-07-14 62 views
1

我想在方法中引用類的名稱。在下面的例子中,我想要打印出TestSuite。我可以放CarsTestSuite.class.getName(),但我想使用該方法來獲取類名,這樣我就不必編輯它。該解決方案將找到方法的類,而不是我自己加油吧。從方法中獲取類名

public class TestSuite extends TestCase { 

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

回答

6

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

你的方法是靜態的,所以這是行不通的。它需要是靜態的嗎?

+0

不,它不需要是靜態的,上面的例子:this.getClass()。getName()工作。謝謝。 – 2010-07-14 16:34:08

0

你不能在靜態方法中做到這一點。在非靜態方法中,您可以調用getClass(),但是在靜態方法中,方法的類永遠不會更改,因此類(以及其名稱)只能以靜態方式訪問,並且在TestSuite.class中。

0

我需要它是靜態的,因爲在另一類我稱之爲類。所以,如果我做

TestSuite.testOne();

在另一類

,它不會讓我這樣做,除非我有testOne()聲明爲靜態的。

0

您可以使用異常的堆棧跟蹤由約在第一個元素當前的類和方法的信息的事實。我用這樣的結構時,我想記錄當前類名稱:

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

以同樣的方式,你可以檢索也當前的方法名稱(StackTraceElement.getMethodName()