开发者学堂课程【Java 高级编程:级联属性赋值】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/20/detail/390
级联属性赋值
现在已经成功的实现级联的对象实例化处理,那么随后就需要去考虑级联的属性的设置了,在之前考虑级联对象实例化处理的时候会发现,循环的时候都是少了一位的。
//最后一位肯定是指定类中的属性名称,所以不在本次实例化处理的范畴之内
for (int y = 0 ; y < temp.length - 1 ; y ++) { //实例化
//调用相应的getter方法,如果getter方法返回了null表示该对象未实例化
Method getMethod = currentObject.getClass().getDeclaredWethod("get" + StringUtils.initcap
object tempobject = getMethod.invoke( current0bject) ;
if (tempobject == nul1){//该对象现在并没有实例化
Field field = currentObject.getclass().getDeclaredField(temp[y]) ; //获取属性类型
Method method = currentobject.getclass().getDeclared
Method("set" + Stringutils.initcap(tempIobject newObject =
field.getType().getDeclaredConstructor( ).newInstance()
method.invoke( currentobject,newObject) ;
currentobject = newObject ;
}else {
currentobject = tempobject ;
}
当此时代码循环处理完成之后,currentObject 表示的就是可以。
进行 setter 方法调用的对象了,并且理论上该对象一定不可能为 mull, 随后就可以按照之前的方式利用对象进行 setter 调用。
范例:实现对象的级联属性设置
//进行属性内容的设置
Field field = currentObject.getclass().getDeclaredField(temp[temp.length - 1]) ;//获取成员
Method setMethod = currentObject.getclass().getDeclaredMethod("set" + StringUtils.initcap(temp
object convertValue = BeanUtils.
convertAttributeVaLue(field.getType( ) .getName(), attval[1]) ;
setMethod.invoke( currentobject, convertValue) ;//调用
setter方法设置内容
在以后的开发之中简单 Java 类的赋值处理将不再重复调用 setter 操作完成,而这种处理形式是在正规开发中普遍采用的方式。