一般情況下在Spark項目裏面只會寫一些數據處理的job,但是偶爾也會有一些特別的需求,這裏需要定義一個商品(Sku)的類,寫慣了Java的代碼,寫個bean應該也不難。
class SkuInfo {
var skuCode: String
var skuName: String
def _skuCode(skuCode_ : String): Unit = {
skuCode = skuCode_
}
def _skuName(skuName_ : String): Unit = {
skuName = skuName_
}
}
但是一直在報錯,錯誤
Error:(11, 7) class SkuInfo needs to be abstract, since:
it has 5 unimplemented members.
/** As seen from class SkuInfo, the missing signatures are as follows.
* For convenience, these are usable as stub implementations.
*/
def skuClassName_=(x$1: String): Unit = ???
def skuCode_=(x$1: String): Unit = ???
def skuDivisionName_=(x$1: String): Unit = ???
def skuName_=(x$1: String): Unit = ???
def skuSectionName_=(x$1: String): Unit = ???
class SkuInfo {
...
錯誤原因:
Scala的Class屬性裏面的變量一定要初始化。
如果沒有初始化,Scala會認爲認爲當前類是一個抽象類,所以會報上面的錯誤。
如果只有一個變量沒有初始化,編譯器會提示該變量沒有初始化。
解決辦法:
var skuCode: String = ”“ 或者 var skuCode:String = _
如果是= _的話,Scala會自動填充一個默認值
一般來說,您應該仔細考慮這是否是代碼的正確寫法; 許多需要在使用前進行初始化的字段是安全的,如果沒有任何機制來強制執行初始化,就會出現問題。
參考:
https://stackoverflow.com/questions/18453406/error-class-animal-needs-to-be-abstract-since-it-has-5-unimplemented-members