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("==========================================")
}
}
}
你这里的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,所以值会被覆盖掉