簡體   English   中英

Scala-將特征類型作為方法參數傳遞

[英]Scala - Passing Trait type as method parameter

在java中,我們可以有一個將Class作為參數的方法,例如:

void someMethod(Class className)
{
   System.out.println(className);
}

類似地,在Scala中有沒有一種方法可以將Trait作為參數而不是Class?

如果可以做到,您將如何使用它?

Scala特征被編譯為接口和相應的類。 您可以將接口傳遞給方法(因為接口是一種Class):

scala> trait Foo
scala> val c: Class = classOf[Foo]
a: Class[Foo] = interface Foo

scala> def someMethod(c: Class[_]) = c.getName
scala> someMethod(a)
res1: String = Foo

類部分被編譯成一個隱藏的Foo$class類文件。 但是,您可以將實現您的Trait的Class傳遞給方法。 由於拆分為基礎Java類和接口,我不知道直接傳遞特性的方法。

另請參閱此答案 答案

暫無
暫無

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

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