簡體   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