private int id
private String name
private double amount
public int getId() {
return id
}
public void setId(int id) {
this.id = id
}
public String getName() {
return name
}
public void setName(String name) {
this.name = name
}
public double getAmount() {
return amount
}
public void setAmount(double amount) {
this.amount = amount
}
}
获取类信息:
import java.lang.reflect.Fieldimport java.lang.reflect.Method
import java.lang.reflect.Parameter
public class ReflectDemo {
public static void main(String[] args) {
Class clz = User.class
// 获取所有自己定义的属性(不包含从Object继承的,如果需要可使用getFields()方法)
Field[] fields = clz.getDeclaredFields()
for (Field f : fields) {
System.out.println("属性名称:" + f.getName() + ",属性类型:" + f.getType().getName())
}
// 获取所有自己定义的方法(同样不包含继承的)
Method[] methods = clz.getDeclaredMethods()
for (Method m : methods) {
System.out.println("方法名称:" + m.getName())
System.out.println("返回值类型:" + m.getReturnType().getName())
// 获取方法的所有参数
Parameter[] parameters = m.getParameters()
for (Parameter p : parameters) {
System.out.println("参数类型:" + p.getType().getName())
}
System.out.println("==========================================")
}
}
}
用反射,代码你可以参考下面的:public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
Field[] field = model.getClass().getDeclaredFields() //获取实体类的所有属性,返回Field数组
for(int j=0 j<field.length j++){ //遍历所有属性
String name = field[j].getName() //获取属性的名字
System.out.println("attribute name:"+name)
String type = field[j].getGenericType().toString() //获取属性的类型
if(type.equals("class java.lang.String")){ //如果type是类类型,则前面包含"class ",后面跟类名
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) )
String value = (String) m.invoke(model) //调用getter方法获取属性值
if(value != null){
System.out.println("attribute value:"+value)
}
}
if(type.equals("class java.lang.Integer")){
Method m = model.getClass().getMethod("get" + name.substring(0,1).toUpperCase() + name.substring(1) )
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.substring(0,1).toUpperCase() + name.substring(1) )
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.substring(0,1).toUpperCase() + name.substring(1) )
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())
}
}
}