Java public 字段可在调试器中访问但在 Kotlin 代码中不可访问
Java public field accessible in debugger but not in Kotlin code
为什么下面的public字段classandroid.util.DisplayMetrics
:
public float noncompatDensity;
在调试器中可见:
但在代码中不可用?
我正在使用 Android Studio Bumblebee | 2021.1.1 补丁 3
如果您查看源代码,您会看到:
/**
* The reported scaled density prior to any compatibility mode scaling
* being applied.
* @hide
*/
public float noncompatScaledDensity;
它带有 @hide
注释,这意味着该字段在技术上不是 SDK 的一部分。 Google 使用@hide 注释去除 类 和他们不想成为 public SDK 一部分的方法。这就是为什么您的 IDE 无法针对它们编译您的代码——它们实际上不存在。但是,实际设备上的 android 框架 jar 确实包含这些 类 和方法,这就是为什么可以在运行时使用反射访问它们的原因。
为什么下面的public字段classandroid.util.DisplayMetrics
:
public float noncompatDensity;
在调试器中可见:
但在代码中不可用?
我正在使用 Android Studio Bumblebee | 2021.1.1 补丁 3
如果您查看源代码,您会看到:
/**
* The reported scaled density prior to any compatibility mode scaling
* being applied.
* @hide
*/
public float noncompatScaledDensity;
它带有 @hide
注释,这意味着该字段在技术上不是 SDK 的一部分。 Google 使用@hide 注释去除 类 和他们不想成为 public SDK 一部分的方法。这就是为什么您的 IDE 无法针对它们编译您的代码——它们实际上不存在。但是,实际设备上的 android 框架 jar 确实包含这些 类 和方法,这就是为什么可以在运行时使用反射访问它们的原因。