2017-07-04 81 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")