首页 > 代码库 > Java-反射之方法反射的基本操作
Java-反射之方法反射的基本操作
以前,我们调用一个类里面的方法,通常通过对象名来进行操作。今天我们通过反射机制来调用类里面的方法,包括私有的方法也可以调用。
1 package com.example.Reflect; 2 3 import java.lang.reflect.InvocationTargetException; 4 import java.lang.reflect.Method; 5 6 public class MethodDemo1 { 7 public static void main(String[] args) { 8 A a = new A(); 9 Class c1 = a.getClass(); 10 /** 11 * 通过getMethod 12 */ 13 try { 14 /**获得print(int , int)方法 15 * 16 */ 17 //Method method = c1.getMethod("print", new Class[]{int.class, int.class}); 18 Method method = c1.getMethod("print", int.class, int.class); 19 /** 20 * 如果方法返回值类型为空的话,则下面的调用返回的值null 21 * 否则返回的是Object的对象 22 */ 23 //Object invoke = method.invoke(a, new Object[]{10, 20}); 24 Object invoke = method.invoke(a, 10, 20); 25 26 /** 27 * 获得print()方法 28 */ 29 //method = c1.getMethod("print"); 30 method = c1.getMethod("print", new Class[]{}); 31 //method.invoke(a); 32 method.invoke(a, new Object[]{}); 33 } catch (NoSuchMethodException | SecurityException e) { 34 // TODO Auto-generated catch block 35 e.printStackTrace(); 36 } catch (IllegalAccessException e) { 37 // TODO Auto-generated catch block 38 e.printStackTrace(); 39 } catch (IllegalArgumentException e) { 40 // TODO Auto-generated catch block 41 e.printStackTrace(); 42 } catch (InvocationTargetException e) { 43 // TODO Auto-generated catch block 44 e.printStackTrace(); 45 } 46 47 } 48 } 49 class A 50 { 51 public void print() 52 { 53 System.out.println("hello world"); 54 } 55 public void print(int a, int b) 56 { 57 System.out.println(a + b); 58 } 59 public void print(String a, String b) 60 { 61 System.out.println(a + ", " + b); 62 } 63 }
Java-反射之方法反射的基本操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。