Java中通过method对象来调用方法

 1 package reflectTest;
 2
 3 import java.lang.reflect.Method;
 4
 5 /**
 6  * 通过获取类类型,进而获取Method对象,进而调用类的方法,
 7  * 和直接通过类的对象来调用方法可以达到一样的效果,这里的示例调用了对象的三个方法
 8  * @author Wang
 9  *
10  */
11 public class MethodDemo1 {
12     public static void main(String[] args) {
13
14         // 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型,要获取print(int ,int )方法
15         A a1 = new A();
16         Class c = a1.getClass();
17
18         // 2.获取方法 名称和参数列表来决定 getMethod获取的是public的方法 getDelcaredMethod自己声明的方法
19         try {
20             System.out.println("==================调用print(int a, int b)方法");
21             // Method m = c.getMethod("print", new Class[]{int.class,int.class});
22             Method m = c.getMethod("print", int.class, int.class);
23             // 方法的反射操作
24             // a1.print(10, 20);方法的反射操作是用m对象来进行方法调用 和a1.print调用的效果完全相同
25             // 方法如果没有返回值返回null,有返回值返回具体的返回值
26             // Object o = m.invoke(a1,new Object[]{10,20});
27             Object o = m.invoke(a1, 10, 20);
28
29
30             System.out.println("==================调用print(String a, String b)方法");
31
32
33             // 获取方法print(String,String)
34             Method m1 = c.getMethod("print", String.class, String.class);
35             // 用方法进行反射操作
36             // a1.print("hello", "WORLD");
37             o = m1.invoke(a1, "hello", "WORLD");
38
39
40             System.out.println("===================调用无参的print方法");
41
42
43             // Method m2 = c.getMethod("print", new Class[]{});
44             Method m2 = c.getMethod("print");
45             // m2.invoke(a1, new Object[]{});
46             m2.invoke(a1);
47
48
49         } catch (Exception e) {
50             // TODO Auto-generated catch block
51             e.printStackTrace();
52         }
53
54     }
55 }
56
57 class A {
58     public void print() {
59         System.out.println("helloworld");
60     }
61
62     public void print(int a, int b) {
63         System.out.println(a + b);
64     }
65
66     public void print(String a, String b) {
67         System.out.println(a.toUpperCase() + "," + b.toLowerCase());
68     }
69 }
时间: 2025-02-01 06:44:57

Java中通过method对象来调用方法的相关文章

Java中的null对象也可以访问static成员变量和方法

声明:本博客为原创博客,未经允许,不得转载!小伙伴们如果是在别的地方看到的话,建议还是来csdn上看吧(链接为 http://blog.csdn.net/bettarwang/article/details/26515271),看代码和提问.讨论都更方便. 一般来说,一个类的对象要在实例化之后才可以访问类中的成员变量和方法.如果它还是null,通常意义上我们就认为它不能访问类中的成员.实际上确实不提倡这样,而且null对象确实不能访问实例成员(变量和方法),否则会引发NULLPointerExc

Java中遍历Map对象的4种方法

在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. [java] view

Java中利用MessageFormat对象实现类似C# string.Format方法格式化

我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使得代码更为直观清楚. 最近使用java时候却java的string.Format与c#重点string.Format用法不一样,java中的string.format更类似于C语言的sprintf()方法 例如: String str=null; str=String.format("Hello,%

java中常用的字符串的截取方法

java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3.getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target

java中Comparable实现对象的比较

/* class A implements Comaprable<A>{ } 那么 A x = new A(); 类关系图 Object o = A; Object Comparable c = A; | Comparable A 实现了 Comparable 接口嘛 |-----|-----A 所以有 o instanceof A == true; o instanceof Comparable == true; 例如ArrayList添加对象实例时,对象实例添加之后先向上转型为Object

Java基础---Java中无参数无返回值方法使用(三十六)

Java 中无参无返回值方法的使用 如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法. 方法的使用分两步: 第一步,定义方法 例如:下面代码定义了一个方法名为 show ,没有参数,且没有返回值的方法,执行的操作为输出 " welcome to imooc. " 注意哦: 1. 方法体放在一对大括号中,实现特定的操作 2. 方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式 第二步,调用方法 当需要调用方法执行某个操作

Java基础---Java中无参数带返回值方法的使用(三十七)

Java 中无参带返回值方法的使用 如果方法不包含参数,但有返回值,我们称为无参带返回值的方法. 例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果 在 calSum( ) 方法中,返回值类型为 int 类型,因此在方法体中必须使用 return 返回一个整数值. 调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理.如: 运行结果: 不容忽视的"小陷阱&

Java基础---Java中带参数无返回值方法的使用(三十九)

Java 中带参无返回值方法的使用 有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行.例如,现实生活中电饭锅可以实现"煮饭"的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真是的"巧妇难为无米之炊"了.我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据. 我们先来看一个带参数,但没有返回值的方法: 上面的代码定义了一个 show 方法,带有一个参数 name

转:Java中的StringTokenizer类的使用方法

StringTokenizer是字符串分隔解析类型,属于:java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象.java默认的分隔符是“空格”.“制表符(‘\t’)”.“换行符(‘\n’)”.“回车符(‘\r’)”. StringTokenizer(String str,String delim):构造一个用来解析str的StringTokenizer对象,并提供一