Scala/Java中`getClass`方法的使用?

3
我发现这个很有效(Scala代码)。
class myClass(i:Int) {

}

val a = new myClass(1)

但是这个不起作用:
val b = a.getClass
val c = new b(1)

编译器无法解析 "b"。 这是为什么呢?在这里,"b" 和 "myClass" 有何不同? 这是否意味着 "myClass" 不是一个对象而 "b" 是一个对象?
2个回答

2

myClass 是一个类型。 b 是一个类型为 java.lang.Class(或术语)。 new 要求前一种类型。


1

new在源代码中需要一个类名。编译器不会尝试将b读取为某种解析为类名的表达式。

你似乎想要做的是反射:在运行时使用对象描述类(你的b),并从中获取实例。


你能否评论一下如何使用反射来实现上述结果? - Shrey
你可以使用a.getClass.newInstance()(如果有无参构造函数),或者在你的情况下使用a.getClass.getConstructor(Integer.TYPE).newInstance(1) - Thilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接