簡體   English   中英

Scala-類型參數的超類型

[英]Scala - Supertype of a type parameter

在Scala中,我該怎么做:

def cast [Type] (x: _ >: Type, errMsg: String): Type = {
    if (x.isInstanceOf[Type]) {
        x.asInstanceOf[Type]
    } else {
        throw new Exception(errMsg) 
    }
}

x: _ >: Type (Scala中不存在的一種表示法),意思是“ x的類型是Type的任何超類型”。

如果x可以是Type的任何superType,那么肯定可以是Any 完全沒有限制,您可以只寫x : Any

在另一行上,由於類型擦除,您x.isInstanceOf[Type]將不做任何有用的檢查。 您無法檢查類型參數。 (您必須確保類型信息在運行時可用。您可以使用Manifest )。

嘗試這個:

def cast[T >: Type](x: T, errMsg: String): T = { ... }

但是,您可能想重新考慮Scala中顯式類型轉換的必要性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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