我有两个班级“ClassA”和“ClassB”。我想从ClassA *中获取类对象,显然我不能这样做。
class ClassA {
ClassB.getClass() // <-- won't compile
}
class ClassB {
}
唯一的方法是实例化特定的类并从新创建的对象中调用getClass()。但我真的不想为此创建一个新对象!
class ClassA {
new ClassB().getClass() // <-- compiles, but I don't want to create a new object!
}
class ClassB {
}
在Java中,这是直截了当的。 Scala做同样的问题是什么?
*对于上下文,我最终希望获得ClassB的FQCN。
答案 0 :(得分:5)
classOf[ClassB]
将为您提供ClassB的Class对象。
答案 1 :(得分:3)
以下是工作示例:
class ClassA {
val bClass = classOf[ClassB]
}
class ClassB {
}
object Main {
def main(args: Array[String]): Unit = {
println(new ClassA().bClass/*<- here you got java.lang.Class object*/.getName())
}
}
Scala 2.11.1将ClassA编译为:
@ScalaSignature(bytes="...")
public class ClassA {
private final Class<ClassB> bClass = ClassB.class;
public Class<ClassB> bClass() { return this.bClass; }
}