繁体   English   中英

我可以在Kotlin中使用其他退货类型吗?

[英]Can i have different return type in kotlin?

例如,假设我调用了这样的函数:

val call1: String = myFunction()

要么

val call2: Int = myFunction()

如何让函数确定调用后返回什么而不是函数本身? 返回类型应该是什么? 任何 ? 单位?

我不知道是否很清楚,所以这里是我正在研究的示例:

我有这条线:

var query: Query = FirebaseDatabase.getInstance().reference.child(path)

在这里,我们将获得一个查询,但如果我这样做:

var query = FirebaseDatabase.getInstance().reference.child(path)

我将得到一个数据库

所以我试图根据函数而不是函数的调用来获取查询或databaseReference。

您可以伪造它。 在Java中,编写这样的方法已经可行:

public <T> T foo(Class<T> clazz) { /* Do stuff */ }

这根据您传入的类返回不同的内容。

您可能仍然希望有类似的东西来完成繁重的工作,但是您可以使它的界面更好一些:

interface Interface {}
class Clazz() : Interface {}
class Clbzz() : Interface {}
fun <T: Interface> foo(clazz: KClass<T>) : T { /* return a T */ }
inline fun <reified T: Interface> foo() : T { return foo(T::class) }

val a =  foo<Clazz>()
val b : Clbzz = foo()

暂无
暂无

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

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