我知道使用 Context和方法 getClass().getName()可以得到一个表示完整类名的字符串,比如 com.package1.package2.MainActivity。
Context
getClass().getName()
com.package1.package2.MainActivity
怎样才能只得到最后一部分,类名? 在这种情况下,它将是 MainActivity字符串。
MainActivity
我可以用一个简单的 split()方法做到这一点,但也许有一个更好的方法,更可靠。
split()
No matter what way you do it, you'll need to perform an extra operation on top of getClass. I'd recommend this over split:
String className = xxx.getClass(); int pos = className.lastIndexOf ('.') + 1; String onlyClass = className.substring(pos);
若要只获取类的名称,而不是完整路径,请使用以下表达式:
String className = this.getLocalClassName(); //or String className = getBaseContext().getLocalClassName(); //or String className = getApplicationContext().getLocalClassName();
你只需要这个。
MainActivity.this.getClass().getSimpleName();
Alternatively, you could use:
private static final String TAG = MainActivity.class.getSimpleName();
没有其他的解决方案对我有效,不知道为什么。我正在使用
this.getClass().getName().replace("$",".").split("\\.")[3]
在一个字符串中,您可以在线程和侦听器中使用它。
(在列表中我得到类似 Com.djdance. android. main $53的东西)
如果你想知道课外的名字,你可以打电话:
MainActivity.class.getSimpleName()
通过这种方式,您可以避免使您的类成为静态的。
如果需要在方法中使用类名,请使用 getLocalClassName()
getLocalClassName()
如果需要在方法外部使用类名,请使用 getClass().getSimpleName()
getClass().getSimpleName()
如果想在同一个类的多个方法中重用类名,那么在类中使用 private final String TAG = getClass().getSimpleName();,然后在每个方法中使用 TAG 变量。
private final String TAG = getClass().getSimpleName();
如果希望从静态方法访问类名,那么现在使用 private static final String TAG = MainActivity.class.getSimpleName();在静态方法中使用静态变量 TAG。
Use the getSimpleName method:
getSimpleName
String name = getClass().getSimpleName();
在 kotlin 你应该使用:
val className = javaClass.simpleName
科特林方式: MainActivity::class.java.simpleName
MainActivity::class.java.simpleName