java - Android Intent 中 SecondActivity.class 的正确含义?

标签 java android android-intent reflection

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/

相关文章:

java - 如何让手机以编程方式进入 hibernate 状态

android - android和windows通过socket通信

java - 安卓.view.InflateException : Binary XML file line #13: Error inflating class ViewPager

Java - JEditorPane - 超链接问题

java - 为多目录项目制作文件

java - JFrame 中的网站图标

android - 如何获取 Firebase 测试实验室结果的通知?

java - 从 RecyclerView 中删除多个选定的项目

android - 如何更改微调器中的下拉高度

android - 使用 Android 的 TextView 的 FindViewById 上的 NulPointer 异常