Как получить только имя класса, а не полный путь?

Мне известно, что с помощью Context и метода getClass().getName() я могу получить строку, которая представляет полное имя класса, например com.package1.package2.MainActivity.

Как я могу получить только последнюю часть, только имя класса? В этом случае это будет строка MainActivity.

Я могу сделать это с помощью простого метода split(), но, возможно, есть лучший способ, более надежный.

Ответ 1

Это все, что вам нужно.

MainActivity.this.getClass().getSimpleName();

Ответ 2

Чтобы получить только имя класса, а не полный путь, вы будете использовать это выражение:

String className =  this.getLocalClassName(); 
//or
String className = getBaseContext().getLocalClassName();  
//or
String className = getApplicationContext().getLocalClassName(); 

Ответ 3

В качестве альтернативы вы можете использовать:

private static final String TAG = MainActivity.class.getSimpleName();

Ответ 4

Независимо от того, каким образом вы это сделаете, вам нужно выполнить дополнительную операцию поверх getClass. Я бы порекомендовал это по расколу:

String className = xxx.getClass();
int pos = className.lastIndexOf ('.') + 1; 
String onlyClass = className.substring(pos);

Ответ 5

  • Если вам нужно имя класса внутри метода, используйте getLocalClassName()

  • Если вам требуется имя класса вне метода, используйте getClass().getSimpleName()

  • Если вы хотите повторно использовать имя класса в нескольких методах внутри одного класса, используйте private final String TAG = getClass().getSimpleName(); внутри класса, а затем используйте переменную TAG в каждом методе.

  • Если вы хотите получить доступ к имени класса из статических методов, используйте private static final String TAG = MainActivity.class.getSimpleName(); теперь использовать статические переменные TAG в своих статических методах.

Ответ 6

Никакие другие решения не работают для меня, не знаю почему. Я использую

this.getClass().getName().replace("$",".").split("\\.")[3]

cons: в одной строке, и вы можете использовать ее в потоках и прослушивателях.

(в listeres я получаю что-то вроде com.djdance.android.main $53)

Ответ 7

Если вы хотите получить имя за пределами класса, вы можете позвонить:

MainActivity.class.getSimpleName()

таким образом вы можете избежать статического статического класса.