2016-07-10 65 views
4

我想從Kotlin保存一個對象在Firebase數據庫內, 我不覺得正確的提供了一個默認的空構造函數並將值設置爲nullable,必須更改我的所有代碼bc 。kotlin對象的空構造函數使用Firebase

我的類:

class Video(var id: String, var url: String, var owner: User) : { 
    constructor() : this("", "", User("", "", "")) 
} 

火力地堡推:

FirebaseDatabase.getInstance().reference.child("public").push().setValue(video) 

錯誤:

is missing a constructor with no arguments

是否有這更好的解決辦法?

回答

16

使用默認參數:

class Video(var id: String = "", var url: String = "", 
    var owner: User = User("", "", "")) 

(也可以考慮使用val)。

+1

'val'是不可變的。反序列化器將無法設置實際值,並且最終會得到一堆具有相同(默認)值的對象。 – papageorgiouk

0

您需要將一個空構造函數添加到Video類。這需要能夠使用Firebase的課程。

+0

但這不會與可爲空的類型產生一些不一致,並且事情變得奇怪,只是在這個需求的BC? – Caipivara

+0

我不確定,你必須測試。該要求在Firebase文檔中有所說明。 – PaulNunezM

3

如果它與火力地堡工作根據kotlin documentation我沒有測試過,但是,

NOTE: On the JVM, if all of the parameters of the primary constructor have default values, the compiler will generate an additional parameterless constructor which will use the default values. This makes it easier to use Kotlin with libraries such as Jackson or JPA that create class instances through parameterless constructors.

,所以我想,通過應用默認值的所有構造函數的參數會爲您生成參數的構造函數。

+1

是的,它的作品! – sokarcreative