scala中泛型和隱式轉化
阿新 • • 發佈:2018-11-27
隱式轉化
邊寫邊譯模式中:
new Person[Int](15,18).max() class Data(number: Int){ def show(): Int ={ print("1"+" "+number) 2 } } implicit def show(num:Int) = new Data(num) 1.show
如果下面這句程式碼,就會報錯,下面這個程式碼就起到了隱式轉換的作用,
implicit def show(num:Int) = new Data(num)
泛型的使用
邊寫邊譯模式中:
class Person[M<%Comparable[M]](var x:M,var y:M){ def max(): Int ={ x.compareTo(y) } } new Person[Int](15,18).max()
其中%起到了隱式轉化的作用
本來程式碼是這樣的:
class Person[M<:Comparable[M]](var x:M,var y:M){ def max(): Int ={ x.compareTo(y) } } new Person[Int](15,18).max()
但是發現這裡會報錯,原因是Comparable給泛型一個上限類,所在類需要繼承Comparable,
但是scala中Int沒有繼承該類,將Int換成Integer或String就行
new Person[Int](15,18).max()
class Data(number: Int){
def show(): Int ={
print("1"+" "+number)
2
}
}
implicit def show(num:Int) = new Data(num)
1.show