您好,登錄后才能下訂單哦!
這篇文章主要介紹“Scala的Bean屬性怎么使用”,在日常操作中,相信很多人在Scala的Bean屬性怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Scala的Bean屬性怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
一、類
class SimpleClass {
var value = 0
}
val c = new SimpleClass
上面定義了一個簡單的類,看起來和java里面并沒有多大不同。這里還涉及到另一個問題,如果一個方法沒有參數,后面的()是可要可不要的。
二、getter and setter
還是上面那個類,我們看一下它編譯出來的class文件長什么樣子,value屬性變成了private的,而生成了2個方法,雖然跟java的get&set長得不太一樣,但是其實性質是一樣的。特殊之處在于, value_$eq ,這個$eq代表的是=,因為java當中=不能出現在方法名當中,所以用 $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
}
如果改成下面的樣子,問題就出現了,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
}
調用方法
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(); }
六、主構造函數
首先是Scala代碼,Scala代碼的構造函數和java相比更加緊湊,書寫更加簡單
class SimpleClass(name : String) {
}
調用方法
val c = new SimpleClass("bajie")
java代碼
public class SimpleClass
{
public SimpleClass(String name)
{
}
}
這里有幾條規則,可以自己去進行實驗
1、如果構造函數當中的參數,帶有val或var修飾符,它天然的被當做類當中的一個屬性,也會按照之前的規則來生成get和set方法
2、如果構造函數當中的參數,沒有val和var修飾符,它僅僅是一個參數,但是當他在class當中被至少一個方法使用的話,它將會升格為一個屬性。
七、從構造函數
這里還有一個規則,每一個從構造函數,都必須以之前的某個從構造函數或者是主構造函數開始。換句話說,只有主構造函數可以調用其父類的構造函數。這一點是與java不同的。
class Person(name : String) {
var name = "";
var age = 0;
def this(name : String, age: Int){
this(name)
this.age = age
}
}
八、內部類,與java的內部類概念接近,這里不再贅述。
到此,關于“Scala的Bean屬性怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。