簡體   English   中英

將 kotlin 翻譯成 Java

[英]translate kotlin to java

我正在使用屏幕截圖庫(在 Github 中),它是用 Kotlin 編寫的(我不太了解 Kotlin)。

<https://github.com/bolteu/screenshotty>

我不知道如何將一部分代碼翻譯成 Java。 在自述文件中:

val screenshotResult = screenshotManager.makeScreenshot()
val subscription = screenshotResult.observe(
   onSuccess = { processScreenshot(it) },
   onError = { onMakeScreenshotFailed(it) }
)

它說您可以從“它”中獲取屏幕截圖對象? 我怎樣才能做到這一點? 請幫我...

以及如何將此代碼轉換為 Java :

fun show(screenshot: Screenshot) {
   val bitmap = when (screenshot) {
      is ScreenshotBitmap -> screenshot.bitmap
   }
   screenshotPreview.setImageBitmap(bitmap)
}

kotlin 參考文獻指出

it在 lambda 中用於隱式引用其參數

所以代碼片段說onSuccess()只有一個參數,在onSuccess()的范圍內稱為“it”。 類似地, onError()只有一個參數,在該函數的作用域內稱為“it”。

lambdas 的問題在於,如果您還不知道相應的函數,那么您就完全不知道it究竟是什么。

如果我們假設在制作屏幕截圖時將調用onSuccess()那么很可能在這種情況下it實際上可能是一個Screenshot對象。 同樣, onError()應該叫,如果出事了,所以在這里it可能是某種Exception

找出答案的一種方法是在庫模塊中查找ScreenshotResult

在這里,我們找到了observe()的聲明

fun observe(onSuccess: (Screenshot) -> Unit, onError: (Throwable) -> Unit): Subscription

現在我們知道,對於onSuccess()it是一個Screenshot而對於onError()it是一個Throwable

因此,如果您實現了processScreenshot() ,您將編寫一個獲取Screenshot的函數:

fun processScreenshot(screenshot: Screenshot){
    // your code here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM