如何获取类名,而不是完整路径?

时间:2012-05-15 17:53:13

标签: android

我知道使用Context和方法getClass().getName()我可以获得一个代表完整类名的字符串,例如com.package1.package2.MainActivity

我怎样才能只获得最后一部分,类名?在这种情况下,它将是MainActivity字符串。

我可以使用简单的split()方法来实现,但也许有更好的方法,更可靠。

10 个答案:

答案 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)

  1. 如果您需要方法中的类名,请使用getLocalClassName()

  2. 如果您需要方法外的班级名称,请使用getClass().getSimpleName()

  3. 如果要在同一个类中的多个方法中重用类名,请在类中使用private final String TAG = getClass().getSimpleName();,然后在每个方法中使用TAG变量。

  4. 如果要从静态方法访问类名,那么现在使用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