获取类的三种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import java.util.Date; public class Test { public static void main(String args[]) { Class<?> cls = new Date().getClass(); Class<?> cls1 = Date.class; Class<?> cls2 = Class.forName("java.util.Date");
System.out.println(cls); System.out.println(cls.getName());
Object obj = cls.newInstance(); System.out.println(obj);
Method method[] = cls.getMethods(); for(Method item : method) { System.out.println(item.getName()); } } }
|
反射调用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| package com.demo; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method;
public class Test2 { public static void main(String args[]) throws Exception { Class<?> cls = Person.class; Object obj = cls.newInstance();
Method setName = cls.getMethod("setName", String.class); Field ageField = cls.getDeclaredField("age"); Method setAge = cls.getMethod("setAge", ageField.getType()); Method getName = cls.getMethod("getName"); Method getAge = cls.getMethod("getAge");
setName.invoke(obj, "cwj"); setAge.invoke(obj, 18);
Field fields[] = cls.getFields(); for(Field item : fields) { System.out.println("---------------"); System.out.println(item); }
Field nameField = cls.getDeclaredField("name"); nameField.set(obj, "qwer"); System.out.println(nameField.get(obj));
Object name = getName.invoke(obj); Object age = getAge.invoke(obj);
System.out.println(name); System.out.println(age); } } class Person { public String name; public Integer age = 1; public Person() {} public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setAge(Integer age) { this.age = age; } public int getAge() { return this.age; } }
|