我知道使用Context
和方法getClass().getName()
我可以获得一个代表完整类名的字符串,例如com.package1.package2.MainActivity
。
我怎样才能只获得最后一部分,类名?在这种情况下,它将是MainActivity
字符串。
我可以使用简单的split()
方法来实现,但也许有更好的方法,更可靠。
答案 0 :(得分:149)
这就是你所需要的一切。
MainActivity.this.getClass().getSimpleName();
答案 1 :(得分:19)
要仅获取类的名称,而不是完整路径,您将使用此表达式:
String className = this.getLocalClassName();
//or
String className = getBaseContext().getLocalClassName();
//or
String className = getApplicationContext().getLocalClassName();
答案 2 :(得分:6)
或者,您可以使用:
private static final String TAG = MainActivity.class.getSimpleName();
答案 3 :(得分:1)
无论你采用何种方式,都需要在getClass之上执行额外的操作。我建议过分裂:
String className = xxx.getClass();
int pos = className.lastIndexOf ('.') + 1;
String onlyClass = className.substring(pos);
答案 4 :(得分:1)
如果您需要方法中的类名,请使用getLocalClassName()
如果您需要方法外的班级名称,请使用getClass().getSimpleName()
如果要在同一个类中的多个方法中重用类名,请在类中使用private final String TAG = getClass().getSimpleName();
,然后在每个方法中使用TAG变量。
如果要从静态方法访问类名,那么现在使用private static final String TAG = MainActivity.class.getSimpleName();
在静态方法中使用静态变量TAG。
答案 5 :(得分:0)
没有其他解决方案适合我,不知道为什么。我正在使用
this.getClass().getName().replace("$",".").split("\\.")[3]
缺点:在一个字符串中,您可以在线程和侦听器中使用它。
(听说我得到像 com.djdance.android.main $ 53 )
答案 6 :(得分:0)
如果您想在课堂外取名,可致电:
MainActivity.class.getSimpleName()
通过这种方式,您可以避免使您的班级静止。
答案 7 :(得分:0)
使用getSimpleName
方法:
String name = getClass().getSimpleName();
答案 8 :(得分:0)
在Kotlin中,您应该使用:
val className = javaClass.simpleName
答案 9 :(得分:0)
Kotlin方式:MainActivity::class.java.simpleName