我觉得这很有效(Scala代码)
class myClass(i:Int) {
}
val a = new myClass(1)
但这不起作用:
val b = a.getClass
val c = new b(1)
编译器会说无法解决" b"。
有没有人有这方面的想法?
这里b
和myClass
之间有什么区别?
这是否意味着myClass
不是对象,而b
是对象?
答案 0 :(得分:2)
myClass
是类型。 b
是java.lang.Class
类型的值(或 term )。 new
需要前者。
答案 1 :(得分:1)
new
需要源代码中的类名。编译器不会尝试将b
读作一个以某种方式解析为类名的表达式。
您似乎要做的是反思:使用对象在运行时描述类(您的b
)并从中获取实例。