2017-07-04 98 views
0
泛型類型參數

我是新來的Scala和具有用Java編寫的通用方法:指定斯卡拉

public interface Context{ 
    <T> Optional<T> get(String parameterName); 
} 

和Scala類:

class Mcls(ctx: Context){ 
    val str = ctx.[Optional[String]]get("str").get //error 
} 

是否有指定泛型類型參數的方式在斯卡拉短缺然後asInstanceOf[Optional[String]]

回答

2

asInstanceOf[Optional[String]]在這種情況下只是不正確,即使它發生因類型擦除工作。要指定參數,直接您會寫

ctx.get[String]("str") 

這是直接等同於ctx.<String> get("str")在Java中。

1

我認爲你可以使用類型別名短這一點,這是沒有必要類型。

type MY_TYPE = Optional[String] 
    val str: MY_TYPE = ctx.get("str") //it's unnecessary get in here, since the `get` method already return `MY_TYPE`, and specify type after variable, the compiler will auto infer the generic type for this. 
    println(str) 
3

val str: Optional[String] = ctx.get("str")應該這樣做。

,因此應該val str = ctx.get[String]("str")