方法的反射
一、方法的反射
1 import java.lang.reflect.Method; 2 import java.util.Scanner; 3 4 public class kh { 5 public static void main(String[] args) { 6 Scanner s=new Scanner(System.in); 7 System.out.println("请输入字符:"); 8 test dd=new test(); 9 String f=s.nextLine(); 10 //只需要获取类中的方法名,即可实现类中方法的调用 11 try { 12 Class d=test.class; 13 Method method=d.getMethod(f, new Class[]{});//当方法中有参数时,此处应添加参数 14 method.invoke(dd, new Class[]{}); 15 } catch (Exception e) { 16 17 e.printStackTrace(); 18 } 19 20 21 } 22 23 } 24 class test{ 25 public void print(){ 26 System.out.println("print----"); 27 } 28 public void print1(){ 29 System.out.println("print1---------"); 30 } 31 }
2、调用javaBeen中的get函数实例
1 import java.lang.reflect.Method; 2 3 public class kh{ 4 public static void main(String[] args) { 5 User user=new User(30,"zhangsan"); 6 7 System.out.println(h("age",user)); 8 9 } 10 public static Object h(String name,Object object){ 11 //生成类类型 12 Class a=object.getClass(); 13 //处理输入的name成getName或getAge 14 String getname="get"+name.substring(0, 1).toUpperCase()+name.substring(1); 15 try { 16 //调用JavaBeen中的get函数 17 Method method=a.getMethod(getname, new Class[]{}); 18 Object o=method.invoke(object, new Class[]{}); 19 return o; 20 } catch (Exception e) { 21 e.printStackTrace(); 22 return null; 23 } 24 25 } 26 } 27 class User { 28 int age; 29 String name; 30 public int getAge() { 31 return age; 32 } 33 public void setAge(int age) { 34 this.age = age; 35 } 36 public String getName() { 37 return name; 38 } 39 public void setName(String name) { 40 this.name = name; 41 } 42 public User(int age, String name) { 43 super(); 44 this.age = age; 45 this.name = name; 46 } 47 48 }