我有以下对象:
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?????
谢谢!
答案 0 :(得分:2)
这有效:
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
答案 1 :(得分:0)
从clazz.getDeclaredFields()
开始 - 这为您提供了所有在课堂上声明的字段,而不仅仅是公共字段。您可能会发现它们是私有的,实际上是合成的吸气剂。因此,请使用getDeclaredMethods
检查所有方法。打印出所有内容,看看发生了什么。如果不是太麻烦,回过头来发现,对其他人来说这可能是一个有趣的读物。
答案 2 :(得分:0)
我不确定你想要达到的目标,但如果你只想要价值而不需要反思:
public class Test {
public static void main(String[] s) {
System.out.println(com.rock.Asteriod$.MODULE$.orbitDiam());
}
}