利用反射可以做到
Field filed = classNamegetDeclaredField(parameter);
className为对应类模版,parameter为你的属性名称
filedgetType()toString(); 然后利用这个方法可以查询到对应属性类型
基本类型直接返回比如 int 直接返回int ,如果是包装或者引用 则直接
返回对应包类名 比如 class javalangShort
如果你要获取所有的 还是利用class对象
Field[] fields =classNamegetDeclaredFields();
循环遍历就可以了
用反射,代码你可以参考下面的:
public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Field[] field = modelgetClass()getDeclaredFields(); //获取实体类的所有属性,返回Field数组
for(int j=0 ; j<fieldlength ; j++){ //遍历所有属性
String name = field[j]getName(); //获取属性的名字
Systemoutprintln("attribute name:"+name);
String type = field[j]getGenericType()toString(); //获取属性的类型
if(typeequals("class javalangString")){ //如果type是类类型,则前面包含"class ",后面跟类名
Method m = modelgetClass()getMethod("get" + namesubstring(0,1)toUpperCase() + namesubstring(1) );
String value = (String) minvoke(model); //调用getter方法获取属性值
if(value != null){
Systemoutprintln("attribute value:"+value);
}
}
if(typeequals("class javalangInteger")){
Method m = modelgetClass()getMethod("get" + namesubstring(0,1)toUpperCase() + namesubstring(1) );
Integer value = (Integer) minvoke(model);
if(value != null){
Systemoutprintln("attribute value:"+value);
}
}
if(typeequals("class javalangShort")){
Method m = modelgetClass()getMethod("get" + namesubstring(0,1)toUpperCase() + namesubstring(1) );
Short value = (Short) minvoke(model);
if(value != null){
Systemoutprintln("attribute value:"+value); }
}
if(typeequals("class javalangDouble")){
Method m = modelgetClass()getMethod("get" + namesubstring(0,1)toUpperCase() + namesubstring(1) );
Double value = (Double) minvoke(model);
if(value != null){
Systemoutprintln("attribute value:"+value);
}
}
if(typeequals("class javalangBoolean")){
Method m = modelgetClass()getMethod("get"+name);
Boolean value = (Boolean) minvoke(model);
if(value != null){
Systemoutprintln("attribute value:"+value);
}
}
if(typeequals("class javautilDate")){
Method m = modelgetClass()getMethod("get"+name);
Date value = (Date) minvoke(model);
if(value != null){
Systemoutprintln("attribute value:"+valuetoLocaleString());
}
}
}
这是获得一个class类的实例,JAVA里面有个类的名字叫做class,在javalang里,用来表示当前类这个类型,这个class类的对象是由JVM自动构造的,所以可以直接获取。
有点拗口,具体的方法和信息你可以看下API。
以上就是关于java如何判断属性类型全部的内容,包括:java如何判断属性类型、java 遍历 类属性的属性值、java中 .class 属性从哪里来哪个类中的属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)