java - 我如何从 Java 反射性地获取 Scala 对象的字段?

标签 java scala reflection scala-java-interop

我有以下对象:

 package com.rock

 object Asteriod {
    val orbitDiam = 334322.3
    val radius = 3132.3
    val length = 323332.3
    val elliptical = false
 }

如何使用 Java 反射获取每个变量的值? 我可以通过似乎无法弄清楚如何获取字段来从对象中获取方法。 这可能吗?

  Class<?> clazz = Class.forName("com.rock.Asteriod$");
  Field field = clazz.getField("MODULE$");
   // not sure what to do to get each of the variables?????

谢谢!

最佳答案

这个有效:

Class<?> clazz = Class.forName("com.rock.Asteriod$");
Object asteroid = clazz.getField("MODULE$").get(null);

Field orbitDiamField = clazz.getDeclaredField("orbitDiam");
orbitDiamField.setAccessible(true);
double orbitDiam = orbitDiamField.getDouble(asteroid);

System.out.println(orbitDiam);

并打印结果 334322.3

关于java - 我如何从 Java 反射性地获取 Scala 对象的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10199564/

相关文章:

java - 为什么星号 (*) 不作为 String[] args 中的普通字符传递?

scala - Apache Spark ALS - 它如何解决最小二乘问题?

orm - 使用 Squeryl 持久化集合

java - 构造实现 List 接口(interface)的对象时出现 InstantiationException

c# - 有没有办法以编程方式获取任意 MemberInfo 的源文件和行号?

java - 在 IntelliJ IDEA 13 中运行编译的 Groovy 代码时出现运行时错误

java - Outlook 请求显示 IST 以外时区的错误时间

java - 用Java阻塞帧切换

java - Apache Spark 应用程序路径中的冒号

python - 如何按名称设置 Python 对象的字段/成员