鍍金池/ 問答/Java  網絡安全/ Kotlin中data class構造函數(shù)的問題

Kotlin中data class構造函數(shù)的問題

clipboard.png

Mybatis 報錯說找不到
yc.ycjz.entity.Child matching [java.lang.Long, java.lang.Long]
這個構造函數(shù)是什么原因???

回答
編輯回答
離夢

data class 的聲明是 Long,從上面代碼上來也就可能是 kotlin.Long
那這個 kotlin.Long 在生成 JVM 代碼時,有可能是 long 也可能是 java.lang.Long
從上面的錯誤來看,應該是生成了 long 類型.
所以 你可以將 Long 聲明指定聲明為 java.lang.Long

2018年6月2日 01:07
編輯回答
哚蕾咪

data class 除非全部提供默認值,否則是沒有空構造函數(shù)的,而MyBatis映射成對象的時候是通過反射拿空構造函數(shù),拿不到就會報錯。
使用kotlin提供的kotlin noarg plugin可以解決,使用方法參考:https://kotlinlang.org/docs/r...

2018年8月1日 18:45
編輯回答
尐懶貓

你沒有把那兩個Long初始化吧。

如果構造函數(shù)是無參的,就會用默認的參數(shù)給屬性賦值。

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.

class Customer(val customerName: String = "")
參見:
https://huanglizhuo.gitbooks....
http://kotlinlang.org/docs/re...

我自己也是剛剛開始學,如果說錯了請指正,謝謝。

2018年4月14日 09:36
編輯回答
離觴
data class Child(
        var stuId: Long? = null,
        var schoolId: Long? = null,
        var stuName: String? = "",
        var stuAvatar: String? = ""
)
2017年9月18日 01:47