2017-04-07 94 views
0

例如,讓我們說我這樣調用一個函數:我可以在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

回答

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() 
相關問題