java - 方法 "contains"的 Kotlin 逻辑转换为 Java 问题

标签 java android kotlin

我正在尝试使用发布在 goo.gl/av3tJD 上的以下代码 fragment

val supportsDistortionCorrection = characteristics.get(

    CameraCharacteristics.DISTORTION_CORRECTION_AVAILABLE_MODES)?.contains(

    CameraMetadata.DISTORTION_CORRECTION_MODE_HIGH_QUALITY) ?: false

我看到代码是用 Kotlin 编写的,我对此知之甚少。 我想将代码转换为 Java。

我正在尝试以下操作:

Boolean hasNoiseReduction = false;
//cc is my previously defined CameraCharacteristics object
if(cc.get(CameraCharacteristics.DISTORTION_CORRECTION_AVAILABLE_MODES).contains("some string"))hasNoiseReduction = true;

方法包含让我失望。我不相信该方法 contains 在 String 类中使用。

需要任何建议

最佳答案

代码中此时的

it.first 指的是上面创建的 Pair 的第一个元素,其中包含 CameraCharacteristics 实例。其上的 get 返回一个 IntArray (Java 术语中的 int[]),以及 contains Kotlin 标准库中的方法检查给定常量是否在该数组中。

val cameraCharacteristics: CameraCharacteristics = it.first
val capabilities: IntArray = cameraCharacteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES)!!
capabilities.contains(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA)

您可以在 Java 中检查这一点,例如,循环遍历数组元素并查看是否找到该值。一个原始的实现:

CameraCharacteristics cameraCharacteristics = ...;
final int[] capabilities = cameraCharacteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES);

boolean contains = false;
for (final int capability : capabilities) {
    if (capability == CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA) {
        contains = true;
        break;
    }
}

// use result

关于java - 方法 "contains"的 Kotlin 逻辑转换为 Java 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54501796/

相关文章:

android - 通过 zip 安装 Chrome 扩展程序,需要 Chrome 的 App Runtime : 'import' extension is not installed

multithreading - 一项协程工作的延迟是否会影响另一项工作?

java - java 和 kotlin 中 this.member 和 this::member 的区别

java - 如何使用 Netbeans 打开 C++ 或 Java 项目 S60 第 5 版 SDK 1.0

java - 将 JSplitPane 与 JTextArea 一起使用

android - 如何在 Android 上创建可扩展的表单布局

java - Session.getAllTrackables 和 Frame.getUpdatedTrackables 有什么区别?

java - Spring aop事务不提交事务

java - 修改TableView javafx中显示前的值

java - 从 ImageView 获取图像并使用编码位图将此图像发送到其他 fragment