![](/img/trans.png)
[英]How can I return the right data type of a instance when this instance might have different data type?
[英]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.