例如,让我说我调用这样的函数:
val call1: String = myFunction()
或
val call2: Int = myFunction()
如何让我的函数决定在调用函数中返回什么而不是函数本身?什么应该是返回类型?任何 ?单位? ?
我不知道它是否清楚,所以这里有我正在做的事情的例子:
我有这一行:
var query: Query = FirebaseDatabase.getInstance().reference.child(path)
这里我们将获得一个查询,但如果我这样做:
var query = FirebaseDatabase.getInstance().reference.child(path)
我将获得一个databaseReference
所以我试图根据函数的调用而不是函数来获取查询或数据引用。
答案 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()