我可以在kotlin中有不同的返回类型吗?

我可以在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根据函数调用而不是函数。

+2

databaseReference是一个查询 - 你是不是决定任何东西 - 它只是databaseReference可以转换为查询您在第一次调用做 – X3Btel

你可以假装它。在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()