1、java利用机制判断对象的属性是否:
mapvalidatemap = new linkedhashmap (); validatemap.put("serial", "编号");
validatemap.put("major", "专业");
public staticstring validatefiledisnull(map fileds,t obj) throws exception{
string ret ="";
for(string key:fileds.keyset()){
string getmethodstr = "get" key.substring(0,1).touppercase() key.substring(1);
method m = obj.getclass().getmethod(getmethodstr);
object value = m.invoke(obj);
if(value==null || value.tostring().trim().equals("")){
if(!validatestring(ret)){
ret=fileds.get(key);
}else{
ret ="," fileds.get(key);
}
}
}
return ret;
} 2、获取该属性的值:
protected void setdata(){
//保存通过setattr方法存储的数据
enumerationattrs = getattrnames();
arraylista = collections.list(attrs);
a.removeall(constants.exceptattrs);//去除无关的数据
for(string attrname : a){
datamap.put(attrname, getattr(attrname));
} //保存appbasecontroller的protected属性的数据
field[] fields = appbasecontroller.class.getdeclaredfields();
for(field field : fields){
//设置对象的访问权限,保证对private的属性的访问
// field.setaccessible(true);
if(modifier.protected == field.getmodifiers()){
try {
object value = field.get(this);
if(value != null){
setattr(field.getname(), value);
datamap.put(field.getname(), value);
}
} catch (illegalaccessexception e) {
e.printstacktrace();
}
}
}
} 3、 设置该属性的值:
protected void setparams(){
enumerationparanames = getparanames();
arraylista = collections.list(paranames);//参数名列表
field[] fields = appbasecontroller.class.getdeclaredfields();//appbasecontroller属性列表 for(field field : fields){
field.setaccessible(true);//modifier.protected == field.getmodifiers();
if("java.lang.string".equals(field.gettype().getname())){//string类型的属性
for(string paraname : a){
string value = getpara(paraname);
string paralowername = paraname.replaceall("_", "").tolowercase();
if(paralowername.equals(field.getname().tolowercase())){//如果参数名有对应的属性名则赋值
try {
field.set(this, value);
} catch (illegalaccessexception e) {
e.printstacktrace();
}
}
}
}
}
}