//获取一个指定State的实例化 参数为一个Class 而且为State类的子类
private static State getStateInstance(Class<? extends State> 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*/
}
举例子:
Integer.getField("MIN_VALUE").get(null)
因为MIN_VALUE在Integer类中是静态字段 所以可以get(null)
结果为: