我知道使用Context
和getClass().getName()
方法可以得到一个字符串,表示完整的类名,例如com.package1.package2.MainActivity
。
如何只获取最后一部分,即仅类名?在这种情况下,它将是MainActivity
字符串。
我可以使用简单的split()
方法来实现,但也许有更好、更可靠的方法。
我知道使用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();
如果你需要在方法中获取类名,使用getLocalClassName()
如果你需要在方法外获取类名,使用getClass().getSimpleName()
如果你想在同一个类的多个方法中重复使用类名,则在类内部使用private final String TAG = getClass().getSimpleName();
,然后在每个方法中使用TAG变量。
如果你需要从静态方法中访问类名,则使用private static final String TAG = MainActivity.class.getSimpleName();
,现在在静态方法中使用静态变量TAG。
MainActivity::class.java.simpleName
val className = javaClass.simpleName
String className = xxx.getClass();
int pos = className.lastIndexOf ('.') + 1;
String onlyClass = className.substring(pos);
getSimpleName
方法:String name = getClass().getSimpleName();
MainActivity.class.getSimpleName()
通过这种方式,您可以避免使您的类变为静态。
没有其他的解决方案适合我,不知道为什么。我正在使用
this.getClass().getName().replace("$",".").split("\\.")[3]
缺点:在一个字符串中,你可以在线程和监听器中使用它。
(在监听器中我得到的是这样的东西:com.djdance.android.main$53)
getLocalClassName()
将返回应用程序根目录中的任何包名称。这仅返回类名,无论它是在根目录还是在其他某个包中。 - sandalone