我应该将什么 object 传递给需要 Void 的函数!在一个参数? (科特林)

What object should I pass to a function that requires Void! in a parameter? (Kotlin)

我正在使用合约 ActivityResultContracts.TakePicturePreview() 来捕捉小图像。

private val cameraLauncher =
        registerForActivityResult(ActivityResultContracts.TakePicturePreview()) { bitmap ->
                view?.findViewById<ImageView>(R.id.imageOutput)?.setImageBitmap(bitmap)
        }

当我尝试为 Result 启动 Activity 时,我意识到这个合约需要一个 Void! object 作为输入。所以,我启动这个 activity 的唯一方法是将“null”作为参数传递,我认为这不是很漂亮。

cameraLauncher.launch(null)

我尝试传递“Nothing”、“Unit”,但类型不匹配。

这样做的正确方法是什么?

该函数的 header 将是

public void launch(Void input)

根据 Java 文档,

The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void

因为 Void class 无法实例化,您可以传递给具有 Void 类型参数的方法的唯一值是 null.

之所以首先需要这样做,是因为所有 ActivityContracts 都继承自基础 abstract class ActivityResultContract<I, O>,它需要两种数据类型用于输入 (I) 和输出 (O).由于 TakePicturePreview 不需要任何输入,它使用 Void? 来弥补。

现在回答,

What is the right way to do so?

传递 null 是正确的(也是唯一的)方法。