[英]Specify generic type parameter in Scala
我是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
}
有沒有一種方法可以指定通用類型參數,然后在Scala asInstanceOf[Optional[String]]
?
val str: Optional[String] = ctx.get("str")
應該這樣做。
val str = ctx.get[String]("str")
在這種情況下,即使asInstanceOf[Optional[String]]
恰好由於類型擦除而起作用,也只是不正確。 要直接指定參數,您需要編寫
ctx.get[String]("str")
這直接等效於Java中的ctx.<String> get("str")
。
我認為你可以使用類型別名短這一點,這是不必要的投類型。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.