2010-07-14 2 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() работал. Спасибо. –

0

Вы не можете сделать это в статическом методе. В нестационарном методе вы можете вызвать getClass(), но в статическом методе класс метода никогда не изменяется, и, следовательно, класс (и, следовательно, его имя) может быть доступен только статически, а в TestSuite.class.

0

Мне нужно, чтобы он был статичным, потому что в другом классе я называю этот класс. Так что если я делаю

TestSuite.testOne();

в другом классе, это не позволит мне сделать это, если у меня нет testOne(), объявленного как статический.

0

Вы можете использовать тот факт, что stacktrace исключения содержит информацию о текущем классе и методе в первом элементе. Я использовал такую ​​конструкцию, когда я хотел войти имя текущего класса:

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

Таким же образом можно получить также текущее имя (StackTraceElement.getMethodName())

Смежные вопросы