java.lang.reflect.Field.set(null, value)

今天阅读代码是发现一行代码:

field.set(null, value);

但是特别诧异,因为我记得API文档中对此有描述,第一个参数是Field所属的instance,如果是null,不会抛空指针异常吗?

请教别人后才发现,API中还有一句话我没有注意:

* <p>If the underlying field is static, the <code>obj</code> argument is
* ignored; it may be null.

表示如果Field是static的,则obj即便给它传值,JVM也会忽略的。还说明了,此入参在这种情况下可以为null

你可能感兴趣的:(java.lang.reflect.Field.set(null, value))