簡體   English   中英

在Scala中指定通用類型參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM