指定斯卡拉
问题描述:
泛型类型参数
我是新来的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]]
?
答
asInstanceOf[Optional[String]]
在这种情况下只是不正确,即使它发生因类型擦除工作。要指定参数,直接您会写
ctx.get[String]("str")
这是直接等同于ctx.<String> get("str")
在Java中。
答
我认为你可以使用类型别名短这一点,这是没有必要投类型。
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)
答
val str: Optional[String] = ctx.get("str")
应该这样做。
,因此应该val str = ctx.get[String]("str")