import
java.lang.reflect.Field;
import
java.lang.reflect.InvocationTargetException;
import
java.lang.reflect.Method;
import
java.util.Date;
/**
* 获取实体类型的属性名和类型
* @param model 为实体类
* @author kou 为传入参数
*/
public
class
GetModelNameAndType
{
public
static
void
testReflect(Object model)
throws
SecurityException,
NoSuchMethodException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException, InstantiationException
{
Field[] field = model.getClass().getDeclaredFields();
String[] modelName =
new
String[field.length];
String[] modelType =
new
String[field.length];
for
(
int
i =
0
; i < field.length; i++)
{
String name = field[i].getName();
modelName[i] = name;
String type = field[i].getGenericType().toString();
modelType[i] = type;
field[i].setAccessible(
true
);
field[i].set(model, field[i].getType().getConstructor(field[i].getType()).newInstance(
"kou"
));
name = name.replaceFirst(name.substring(
0
,
1
), name.substring(
0
,
1
)
.toUpperCase());
if
(type.equals(
"class java.lang.String"
))
{
Method m = model.getClass().getMethod(
"get"
+ name);
String value = (String) m.invoke(model);
//调用setter方法赋属性值
if (value == null) {
m = model.getClass().getMethod("set"+name,String.class);
m.invoke(model, "");
}
if
(value !=
null
)
{
System.out.println(
"attribute value:"
+ value);
}
}
if
(type.equals(
"class java.lang.Integer"
))
{
Method m = model.getClass().getMethod(
"get"
+ name);
Integer value = (Integer) m.invoke(model);
if
(value !=
null
)
{
System.out.println(
"attribute value:"
+ value);
}
}
if
(type.equals(
"class java.lang.Short"
))
{
Method m = model.getClass().getMethod(
"get"
+ name);
Short value = (Short) m.invoke(model);
if
(value !=
null
)
{
System.out.println(
"attribute value:"
+ value);
}
}
if
(type.equals(
"class java.lang.Double"
))
{
Method m = model.getClass().getMethod(
"get"
+ name);
Double value = (Double) m.invoke(model);
if
(value !=
null
)
{
System.out.println(
"attribute value:"
+ value);
}
}
if
(type.equals(
"class java.lang.Boolean"
))
{
Method m = model.getClass().getMethod(
"get"
+ name);
Boolean value = (Boolean) m.invoke(model);
if
(value !=
null
)
{
System.out.println(
"attribute value:"
+ value);
}
}
if
(type.equals(
"class java.util.Date"
))
{
Method m = model.getClass().getMethod(
"get"
+ name);
Date value = (Date) m.invoke(model);
if
(value !=
null
)
{
System.out.println(
"attribute value:"
+ value.toLocaleString());
}
}
}
}
public
static
void
main(String[] args)
{
try
{
testReflect(
new
VO());
}
catch
(SecurityException e)
{
e.printStackTrace();
}
catch
(IllegalArgumentException e)
{
e.printStackTrace();
}
catch
(NoSuchMethodException e)
{
e.printStackTrace();
}
catch
(IllegalAccessException e)
{
e.printStackTrace();
}
catch
(InvocationTargetException e)
{
e.printStackTrace();
}
catch
(InstantiationException e)
{
e.printStackTrace();
}
}
}