java中如何遍历实体类的属性和数据类型以及

Python08

java中如何遍历实体类的属性和数据类型以及,第1张

可以通过反射获取到属性方法信息:

public class User {

    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.Field

import 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("==========================================")

        }

    }

}

你这里的numbers是一个对象数组,所以你可以这样遍历,单个对象是不行的。遍历对象内部成员,在反射里面有方法,我刚练习完,只有将对象的成员分解到数组中才行。分享给你了:

Class c=Class.forName("AbstractClassTest.Car")//要包名+类名

Object o=c.newInstance()

Car car=(Car)o

Field[] fields=c.getDeclaredFields()//拿到数据成员

Method[] methods=c.getMethods()//拿到函数成员

/*System.out.println(fields.length)

System.out.println(methods.length)*/

for(Field f : fields){

System.out.println("该类的内部变量有:"+f.getName())

}

for(Method m : methods) {

System.out.println("该类的方法有:"+m.getName())

}

for (int i = 0i <2i++) {

Customer cust = new Customer()// 属性对象

System.out.print("输入会员编号:")

cust.number = input.nextInt()

System.out.print("输入会员积分:")

cust.integral = input.nextInt()

cust2.add(cust)// 传入对象参数

}

每次循环该创建新的对象,你操作的是同一个Customer,所以值会被覆盖掉