【问题标题】:The usage of `getClass` method in Scala/Java?Scala/Java中`getClass`方法的用法?
【发布时间】:2015-05-15 03:56:16
【问题描述】:

我觉得这很好用(Scala 代码)

class myClass(i:Int) {

}

val a = new myClass(1)

但这不起作用:

val b = a.getClass
val c = new b(1)

编译器会说无法解析“b”。

有人对此有想法吗? bmyClass 这里有什么区别? 这是否意味着myClass 不是对象,而b 是对象?

【问题讨论】:

    标签: java scala oop object classloader


    【解决方案1】:

    myClass 是一个类型bjava.lang.Class 类型的 value(或 term)。 new 需要前一种。

    【讨论】:

      【解决方案2】:

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

      您似乎正在尝试做的是反射:在运行时使用对象来描述类(您的b)并从中获取实例。

      【讨论】:

      • 您能否评论一下如何使用反射实现上述结果?
      • 你可以做a.getClass.newInstance()(如果有一个无参数构造函数),或者在你的情况下a.getClass.getConstructor(Integer.TYPE).newInstance(1)
      猜你喜欢
      • 2012-01-06
      • 2011-10-15
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      相关资源
      最近更新 更多