繁体   English   中英

使用方法“包含”将Kotlin逻辑转换为Java问题

[英]Kotlin logic conversion to Java problem with method “contains”

我正在尝试使用以下张贴在goo.gl/av3tJD上的代码

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;

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

需要任何建议

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM