关于java:如何以编程方式获取应用程序类名称

How to get application class name programmatically

我需要在运行时为Android应用程序获取应用程序的子类名称;

例如:public class TargetApplicationClass extends Application{...}

我需要得到EDOCX1[1]的字符串值,

我有什么办法可以做到吗?

让我详细介绍一下我的案件:我不是在开发一个简单的Android应用程序,我已经有了TargetApplicationClass的上下文;我正在开发一个注入库,它对应用程序类的知识为0;我可以通过

1
2
3
app = ActivityThread.currentApplication();
context = app.getApplicationContext();
...

问题是以下代码不需要返回正确的应用程序类名:

1
app.getClass().getName()


1
2
3
TargetApplicationClass.getClass().getName() // use anyone as per your usecase
//TargetApplicationClass.getClass().getCanonicalName()
//TargetApplicationClass.getClass().getSimpleName()

这应该管用


如果你想用这个名字做标记,你可以用

1
private String TAG = TargetApplicationClass.class.getSimpleName();

但是,如果您想获得用于动态加载类的名称,然后你可以用

1
private String Name = TargetApplicationClass.class.getName();

有关更多信息,请参阅此示例

1
2
3
System.out.println(String.class.getName());
System.out.println(String.class.getCanonicalName());
System.out.println(String.class.getSimpleName());

产量

1
2
3
java.lang.String
java.lang.String
String


我相信快速的谷歌搜索就足够了。但是,执行this.getClass().getName()并确保它不是在静态上下文中运行的。