我不知道很多关于java反射的事情,但有没有办法(或者如果不是为什么不)在java中引用类字段而不是简单的字符串,如
myClass.class.getField ("myField")
而是执行类似这样的操作,可以由编译器检查:
myClass.class.getField (myField.field)
或者我不知道也许
myClass.class.getField (myClass.myField.field)
所以我的目标是引用一个字段(私有或其他),编译器可以检查它是否存在,就像你可以引用一个类,编译器可以检查它是否存在。
答案 0 :(得分:2)
不,Java中没有任何内容允许这样做。是的,这会很好 - 但目前还不存在。
我们最接近的是Java 8中方法文字的承诺,在一般的lambda表达式功能中,但据我所知,这不适用于字段。
答案 1 :(得分:1)
我认为你错过了反思点。
来自Oracle Trail:
反射通常由程序使用,这些程序需要能够检查或修改在Java虚拟机中运行的应用程序的运行时行为。 ...
Reflection允许应用程序在运行时期间检查自身。因此,编译时检查不是使用反射时得到的。
但是,您可以在访问代码之前检查代码中是否存在字段。
答案 2 :(得分:1)
你几乎可以这样做:
Field field = myClass.class.getField (someField.getName());
答案 3 :(得分:0)
getField
Class
方法
需要一个String,所以你必须提供字段的String名称。
您可以做的是首先调用getFields()
方法,然后调用这些字段。以下是实现它的步骤:
Class.getFields()
,这将返回Field
数组。getField(field.getName())