Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
startService(intent);
我的理解是,直到未创建这行代码“SecondActivity 对象”并且我们正在将 SecondActivity 的运行时数据发送到 Intent。所以,我认为在运行时编译器会向第二个 Activity 添加一些额外的代码。
我知道这与反射有关,但我仍然没有理解正确。 “.class”是否表示运行时“SecondActivity”类中类型为“Class”的“静态变量类”,例如,
static Class class = .......
我们是否通过“类静态变量”访问类对象?编译器是否在运行时添加了这个静态变量,我们通过它获取 SecondActivity 的“类对象”?我的理解正确吗?
最佳答案
如果我理解您的问题,那就是“什么是 SecondActivity.class?”和/或“什么是 .class?”
虽然这不一定是一个 Android 问题,但我理解上下文并承认它可以被这样解释。
本质上,“.class”指的是一个类(在您的示例中)是 Android 服务的实现,这样调用 startService(intent)
将从该类创建一个 Object 实例,并且将其设置为服务。
实际的 SecondActivity.class
可以被认为是对类“SecondActivity”的常量引用。这一切都由 Java 虚拟机 (JVM) 管理。
这意味着将 SecondActivity.class
作为静态变量调用几乎是正确的,只是它更像是一个静态常量,因为它总是引用一个类称为 SecondActivity
,它要么被加载到内存中,要么将被加载到内存中。
高级解释:
类引用将调用当前的类加载器来获取或加载引用的类。如果该类尚未加载,则会对其进行实例化并调用 static{}
代码块。每个 ClassLoader 只能存在此类的一个实例,并且根据您使用的 ClassLoader,它可能会决定检查是否有任何父 ClassLoader 已经加载了该类。
关于java - Android Intent 中 SecondActivity.class 的正确含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44903693/