Spark錯誤:class needs to be abstract, since: it has n unimplemented members

一般情況下在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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章