Ответ 1
Это все, что вам нужно.
MainActivity.this.getClass().getSimpleName();
Мне известно, что с помощью Context
и метода getClass().getName()
я могу получить строку, которая представляет полное имя класса, например com.package1.package2.MainActivity
.
Как я могу получить только последнюю часть, только имя класса? В этом случае это будет строка MainActivity
.
Я могу сделать это с помощью простого метода split()
, но, возможно, есть лучший способ, более надежный.
Это все, что вам нужно.
MainActivity.this.getClass().getSimpleName();
Чтобы получить только имя класса, а не полный путь, вы будете использовать это выражение:
String className = this.getLocalClassName();
//or
String className = getBaseContext().getLocalClassName();
//or
String className = getApplicationContext().getLocalClassName();
В качестве альтернативы вы можете использовать:
private static final String TAG = MainActivity.class.getSimpleName();
Независимо от того, каким образом вы это сделаете, вам нужно выполнить дополнительную операцию поверх getClass. Я бы порекомендовал это по расколу:
String className = xxx.getClass();
int pos = className.lastIndexOf ('.') + 1;
String onlyClass = className.substring(pos);
Если вам нужно имя класса внутри метода, используйте getLocalClassName()
Если вам требуется имя класса вне метода, используйте getClass().getSimpleName()
Если вы хотите повторно использовать имя класса в нескольких методах внутри одного класса, используйте private final String TAG = getClass().getSimpleName();
внутри класса, а затем используйте переменную TAG в каждом методе.
Если вы хотите получить доступ к имени класса из статических методов, используйте private static final String TAG = MainActivity.class.getSimpleName();
теперь использовать статические переменные TAG в своих статических методах.
Никакие другие решения не работают для меня, не знаю почему. Я использую
this.getClass().getName().replace("$",".").split("\\.")[3]
cons: в одной строке, и вы можете использовать ее в потоках и прослушивателях.
(в listeres я получаю что-то вроде com.djdance.android.main $53)
Если вы хотите получить имя за пределами класса, вы можете позвонить:
MainActivity.class.getSimpleName()
таким образом вы можете избежать статического статического класса.