如何使用 java 中的反射将 Field 设置为 null?
乍一看,这似乎是一个愚蠢的问题,只需执行 field.set(obj, null)
即可。但如果该字段不是对象,而是基元,则会返回错误。我想要的是它“重置”值,无论它是一个对象还是一个基元(例如 String
-> null
, int< /code> ->
0
,boolean
-> false
)。我已经尝试过执行 field.getType().isPrimitive() ? 0 : null
,希望 0
能够转换为 short
、byte
、boolean
等自动,但这也不起作用。我当前的解决方案,使用 field.getType() 的 switch 语句,绝对是垃圾。有没有一种更干净的单行解决方案?
This might seem like a stupid question at first, just do field.set(obj, null)
. But if the field is not an object, but a primitive, this will return an error. What I want is that it "resets" the value, no matter if it is an object, or a primitive (e.g. String
-> null
, int
-> 0
, boolean
-> false
). I have already tried doing field.getType().isPrimitive() ? 0 : null
, hoping that the 0
would cast to short
, byte
, boolean
, etc. automatically, but that did not work either. My current solution, a switch statement using field.getType()
, is absolute garbage. Is there a cleaner, one-line solution to this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论