如何使用反射比较类?

kgr*_*rad 9 java reflection

我试图使用反射确定类的类类型,然后执行特定的操作.例如,如果类是double,则使用double特定方法.

我正在尝试使用


  if(f.getClass() == Double.class)
Run Code Online (Sandbox Code Playgroud)

但是,我收到编译器错误:

"不兼容的操作数类型Class <capture#1-of?extends Field> and Class <Double>"

这样做的正确方法是什么?

编辑:更清楚

f是Field类型.通过循环反射获得


  (Field f : instance.getDeclaredFields())
Run Code Online (Sandbox Code Playgroud)

Sta*_*Man 7

有趣的错误消息(我不知道'=='运算符会检查那些).但基于它,我怀疑你的比较是错误的:你试图看看Field类(理论上它的超类,但仅在理论上 - Field是final)与Double.class相同,它不能是.

所以:是的,比较应该有效,如果你给它正确的论据.所以我怀疑你想做:

if(f.getType()== Double.class)

代替.鉴于Double是最后一堂课,那应该有用.否则"isAssignableFrom"会更合适.