我可以在kotlin中有不同的返回类型吗?
问题描述:
例如,让我们说我这样调用一个函数:我可以在kotlin中有不同的返回类型吗?
val call1: String = myFunction()
或
val call2: Int = myFunction()
我怎样才能让我的功能,决定如何在呼叫,而不是函数本身的fonction回报?什么应该是返回类型?任何 ?单位? ?
我不知道这是否是清楚,所以这里就是我工作的例子:
我有这样一行:
var query: Query = FirebaseDatabase.getInstance().reference.child(path)
在这里,我们将得到一个查询,但如果我这样做即:
var query = FirebaseDatabase.getInstance().reference.child(path)
我会得到一个databaseReference
,所以我试图让任何查询或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()
databaseReference是一个查询 - 你是不是决定任何东西 - 它只是databaseReference可以转换为查询您在第一次调用做 – X3Btel