溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scala的Bean屬性怎么使用

發(fā)布時間:2021-12-08 15:30:57 來源:億速云 閱讀:268 作者:iii 欄目:云計算

這篇文章主要介紹“Scala的Bean屬性怎么使用”,在日常操作中,相信很多人在Scala的Bean屬性怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Scala的Bean屬性怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、類

class SimpleClass {
  var value = 0
}

val c = new SimpleClass

上面定義了一個簡單的類,看起來和java里面并沒有多大不同。這里還涉及到另一個問題,如果一個方法沒有參數(shù),后面的()是可要可不要的。

二、getter and setter

還是上面那個類,我們看一下它編譯出來的class文件長什么樣子,value屬性變成了private的,而生成了2個方法,雖然跟java的get&set長得不太一樣,但是其實性質(zhì)是一樣的。特殊之處在于, value_$eq ,這個$eq代表的是=,因為java當中=不能出現(xiàn)在方法名當中,所以用 $eq 代替。

public class SimpleClass
{
  private int value = 0;

  public int value() { return this.value; }
  public void value_$eq(int x$1) { this.value = x$1; }

}

這個時候,可以正常的訪問這個屬性

    val c = new SimpleClass
    c.value = 100
    val tmp = c.value

三、只有getter

val onlyget = 100

對應的java代碼

  private final int onlyget = 100;

  public int onlyget() {
    return this.onlyget;
  }

四、對象私有

scala里面有private,這一點和java當中的含義是相同的,不同的是,scala當中還有private[this]。先看這段代碼,這樣的代碼是沒有問題的。

class SimpleClass {
  private var value = 0
  def < (that : SimpleClass) = this.value < that.value
}

如果改成下面的樣子,問題就出現(xiàn)了,that.value是無法編譯通過的。private[this]意味著僅對當前對象,也就是this有效。

class SimpleClass {
  private[this] var value = 0
  def < (that : SimpleClass) = this.value < that.value
}

五、Bean屬性

我們還可以構建更加java化的get和set,注意 import scala.beans.BeanProperty 是必須的

import scala.beans.BeanProperty

class SimpleClass {
  @BeanProperty var value = 0
}

調(diào)用方法

    val c = new SimpleClass
    c.getValue()
    c.setValue(20)
    c.value = 234
    val tmp = c.value

java代碼

  private int value = 0;

  public int value() { return this.value; }
  public void value_$eq(int x$1) { this.value = x$1; }
  public void setValue(int x$1) { this.value = x$1; }
  public int getValue() { return value(); }

六、主構造函數(shù)

首先是Scala代碼,Scala代碼的構造函數(shù)和java相比更加緊湊,書寫更加簡單

class SimpleClass(name : String) {
}

調(diào)用方法

val c = new SimpleClass("bajie")

java代碼

public class SimpleClass
{

  public SimpleClass(String name)
  {
  }
}

這里有幾條規(guī)則,可以自己去進行實驗

1、如果構造函數(shù)當中的參數(shù),帶有val或var修飾符,它天然的被當做類當中的一個屬性,也會按照之前的規(guī)則來生成get和set方法

2、如果構造函數(shù)當中的參數(shù),沒有val和var修飾符,它僅僅是一個參數(shù),但是當他在class當中被至少一個方法使用的話,它將會升格為一個屬性。

七、從構造函數(shù)

這里還有一個規(guī)則,每一個從構造函數(shù),都必須以之前的某個從構造函數(shù)或者是主構造函數(shù)開始。換句話說,只有主構造函數(shù)可以調(diào)用其父類的構造函數(shù)。這一點是與java不同的。

class Person(name : String) {
  var name = "";
  var age = 0;
 
  def this(name : String, age: Int){
    this(name)
    this.age = age
  }
}

八、內(nèi)部類,與java的內(nèi)部類概念接近,這里不再贅述。

到此,關于“Scala的Bean屬性怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI