即使这是一个普遍的问题,我也会用一个更容易理解的例子来问它。
场景:
- 我正在使用支持库 7 并使用操作栏功能。用户正在使用 Android 2.2 (API 8) 的设备上安装应用程序。
- 我正在使用支持库 7 并使用操作栏功能。用户正在使用 Android 4.3 (API 18) 的设备上安装应用程序。
很明显,在运行时场景 1 将运行受支持库的代码。但是情况 2 会发生什么?它会运行操作系统代码还是支持库代码。
我真的希望它运行操作系统代码。
编辑
我知道 Java 的工作方式是通过在构建时确定的完全限定名称来解析方法(正如@adelphus 所写的那样)。因此支持库代码将运行。但如果我是实现支持库的人,我会一直执行以下操作:
- 在运行时检查操作系统的版本
- 如果操作系统具有当前对象/方法,我将调用操作系统实现(实际上在这种情况下,支持库只是操作系统功能的包装器)。
- 如果这是一个旧操作系统,我将自己实现该行为
那么,它是作为包装器在较新版本上起作用,还是在两种情况下都使用内部实现?
谢谢