【发布时间】:2017-09-26 12:50:58
【问题描述】:
我正在学习 Android 开发,我注意到 findViewById() 的文档说强制转换其返回的对象是不必要的:
<Android API 26 Platform>
... resulting view is automatically cast to the target class type...
如果不需要,我宁愿不强制转换(编写和阅读的代码更少!),但这似乎是 Java 8 的一个特性。然而,我希望我的应用程序可以在 19 岁(Kitkat)之前的平台上运行。
https://developer.android.com/studio/write/java8-support.html 页面似乎没有涵盖 Java 8 中可用的自动类型转换,并且关于 SO 的各种其他问题/答案表明 Java 8 的一些功能在 SDK 中一直可用9.
首先,我如何判断 Java 语言功能是否在我的目标 SDK 范围内?其次,几年前的平台 API 怎么可能支持新的语言特性?
【问题讨论】:
-
这似乎是 Java 8 的一个特性。 - 它与 java 版本无关。这取决于 android SDK 中的语法,它在版本 26 中发生了变化,所以如果你 targetSdk 26 你可以使用这个功能
-
@TimCastelijns 感谢您的澄清,但这并不完全正确:只要 compileSdk >= 26,您就可以使用它,无论目标 SDK 是什么。此外,这不会使我的问题无效,因为Android supports ... a subset of Java 8 language features that vary by platform version.
标签: java android casting java-8