get(null)

//获取一个指定State的实例化   参数为一个Class 而且为State类的子类
    private static State getStateInstance(Class clazz) {

        /*
        * 问clazz 是否为空?
        * 1.为空  null
        * 2.不为空  执行clazz.getField('instance')
        *
        * 第二个问号 【如果执行了第二个问号,说明clazz肯定不为空】 那就是问 clazz.getField('instance')等不等于空
        * 1.为空  返回空
        * 2.不为空 返回clazz.getField('instance').get(null) as State  [为什么可以get(null) 说明clazz.getField('instance')是静态字段]
        * */
        return clazz?.getField('instance')?.get(null) as State


        //在java的反射中,通过字段获取对象,是通过
        //
        //Java代码  收藏代码
        //public Object get(Object obj)
        /*字段不是静态字段的话,要传入反射类的对象.如果传null是会报
        java.lang.NullPointerException

        但是如果字段是静态字段的话,传入任何对象都是可以的,包括null*/
    }

举例子:


get(null)_第1张图片
image.png
Integer.getField("MIN_VALUE").get(null)    

因为MIN_VALUE在Integer类中是静态字段 所以可以get(null)

结果为:


get(null)_第2张图片
image.png

你可能感兴趣的:(get(null))