Java 如何在scala中指定Foo.class?
我使用的java API如下所示:Java 如何在scala中指定Foo.class?,java,scala,Java,Scala,我使用的java API如下所示: import com.google.code.morphia.Morphia; ..... val morphia = new Morphia(); morphia.map(Hotel.class).map(Address.class); 但它会给scala带来一个编译器错误。 上面的scala中的正确代码是什么?请注意,.map被定义为的一部分 morphia API,不要与scala地图混淆。编辑:在看过API之后;你真正想要的是
import com.google.code.morphia.Morphia;
.....
val morphia = new Morphia();
morphia.map(Hotel.class).map(Address.class);
但它会给scala带来一个编译器错误。
上面的scala中的正确代码是什么?请注意,.map被定义为的一部分
morphia API,不要与scala地图混淆。编辑:在看过API之后;你真正想要的是:
classOf[T]
例如
在Scala的打字系统上
回答错误,但可能有用,如果有人被以下问题标题误导:
class
是Scala中的保留字。如果要将其用作字段或方法名,则需要使用反勾号将其括起来:
Hotel.`class`
你应该使用[Hotel]的
classOf
假设你的问题是.class
部分,那么Hotel.class
的Scala等价物将是[Hotel]的classOf,同样对于Address
希望这能解决您的问题,尽管在没有看到完整的编译器输出的情况下很难判断。您得到了什么编译错误?这修复了编译器错误。希望在完成代码时不会出现运行时错误。不幸的是scala选择了这种格式,它需要的键入量几乎是标准Java的两倍。我认为scala需要更少的输入;在实践中,您会发现,classOf[T]
构造几乎是不需要的。Scala中处理类型相关逻辑的常用技术是模式匹配。@amc Scala没有静态方法,因为静态方法在面向对象环境中没有意义(它们的this
?)是什么。因此,ClassName.class
没有意义——它不能是静态方法,ClassName
不是对象。另一方面,classOf[T]
是对象Predef
上的一种方法,因此它非常有意义。
Hotel.`class`