我试图使用反射确定类的类类型,然后执行特定的操作.例如,如果类是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)
有趣的错误消息(我不知道'=='运算符会检查那些).但基于它,我怀疑你的比较是错误的:你试图看看Field类(理论上它的超类,但仅在理论上 - Field是final)与Double.class相同,它不能是.
所以:是的,比较应该有效,如果你给它正确的论据.所以我怀疑你想做:
if(f.getType()== Double.class)
代替.鉴于Double是最后一堂课,那应该有用.否则"isAssignableFrom"会更合适.
| 归档时间: |
|
| 查看次数: |
10730 次 |
| 最近记录: |