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

时间:2017-04-07 09:37:54

标签: function kotlin return-type

例如,让我说我调用这样的函数:

val call1: String = myFunction()

val call2: Int = myFunction()

如何让我的函数决定在调用函数中返回什么而不是函数本身?什么应该是返回类型?任何 ?单位? ?

我不知道它是否清楚,所以这里有我正在做的事情的例子:

我有这一行:

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

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

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

我将获得一个databaseReference

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

1 个答案:

答案 0 :(得分:0)

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