一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|

服務器之家 - 編程語言 - JAVA教程 - java反射之方法反射的基本操作方法

java反射之方法反射的基本操作方法

2020-11-06 21:14Java教程網 JAVA教程

下面小編就為大家帶來一篇java反射之方法反射的基本操作方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文接上文“java反射之獲取類的信息方法(推薦)”,利用反射(invoke)來獲取一個類中的方法來執行。

1、定義一個類,包含三個名稱相同,參數不同的方法

java" id="highlighter_142475">
?
1
2
3
4
5
6
7
8
9
10
11
12
class A{
  public void print(){
    System.out.println("Hello,World");
  }
 
  public void print(int a,int b){
    System.out.println(a+b);
  }
  public void print(String a,String b){
    System.out.println(a.toUpperCase()+","+b.toLowerCase());
  }
}

2、利用方法的反射(invoke)分別獲取該類三個方法并執行

?
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
public class Test {
  public static void main(String[] args) {
    /**
     * 獲取print(int,int)方法
     * 1、獲取類的類類型
     */
    A a1 = new A();
    Class clazz = a1.getClass();
    /**
     * 2、獲取方法(名稱、參數列表)
     * getMethod()獲取的是public方法
     * getDeclaredMethod()獲取的是自己聲明的方法
     */
    try {
//      Method m = clazz.getMethod("print",new Class[]{int.class,int.class});
      Method m = clazz.getMethod("print", int.class, int.class);
      //方法的反射操作,用m對象進行方法調用,a1.print完全相同
      //方法沒有返回值返回null,有返回值返回具體的返回值
//      Object obj = m.invoke(a1,new Object[]{10,20});
      Object obj = m.invoke(a1,10,20);
 
      System.out.println("================================================");
 
      Method m2 = clazz.getMethod("print", String.class, String.class);
      m2.invoke(a1,"aaa","BBB");
 
      System.out.println("================================================");
 
      Method m3 = clazz.getMethod("print");
      m3.invoke(a1);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

3、完整代碼

?
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
55
package com.format.test;
 
import java.lang.reflect.Method;
 
/**
 * Created by Format on 2017/6/3.
 */
public class Test {
  public static void main(String[] args) {
    /**
     * 獲取print(int,int)方法
     * 1、獲取類的類類型
     */
    A a1 = new A();
    Class clazz = a1.getClass();
    /**
     * 2、獲取方法(名稱、參數列表)
     * getMethod()獲取的是public方法
     * getDeclaredMethod()獲取的是自己聲明的方法
     */
    try {
//      Method m = clazz.getMethod("print",new Class[]{int.class,int.class});
      Method m = clazz.getMethod("print", int.class, int.class);
      //方法的反射操作,用m對象進行方法調用,a1.print完全相同
      //方法沒有返回值返回null,有返回值返回具體的返回值
//      Object obj = m.invoke(a1,new Object[]{10,20});
      Object obj = m.invoke(a1,10,20);
 
      System.out.println("================================================");
 
      Method m2 = clazz.getMethod("print", String.class, String.class);
      m2.invoke(a1,"aaa","BBB");
 
      System.out.println("================================================");
 
      Method m3 = clazz.getMethod("print");
      m3.invoke(a1);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
 
class A{
  public void print(){
    System.out.println("Hello,World");
  }
 
  public void print(int a,int b){
    System.out.println(a+b);
  }
  public void print(String a,String b){
    System.out.println(a.toUpperCase()+","+b.toLowerCase());
  }
}

4、執行結果

java反射之方法反射的基本操作方法

以上這篇java反射之方法反射的基本操作方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
  • JAVA教程java運行shell腳本方法示例

    java運行shell腳本方法示例

    利用Runtime.execute方法,我們可以在Java程序中運行Linux的Shell腳本,或者執行其他程序 ...

    java教程網5822019-10-24
  • JAVA教程SpringBoot整合JPA的實例代碼

    SpringBoot整合JPA的實例代碼

    本篇文章主要介紹了SpringBoot整合JPA的實例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    方志朋3892020-09-24
  • JAVA教程Java關鍵字this(動力節點Java學院整理)

    Java關鍵字this(動力節點Java學院整理)

    java中的this隨處可見,用法也多。通常情況下理解this關鍵字還是很容易的,但是在我初學的時候,有一個疑問卻一直不能很清晰的理解,現在慢慢的理解了...

    Java之家4412020-09-04
  • JAVA教程Java實現簡單堆棧代碼

    Java實現簡單堆棧代碼

    這篇文章主要為大家詳細介紹了Java實現簡單堆棧代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下 ...

    FrankYou3612020-07-10
  • JAVA教程Java Scanner類的使用示例

    Java Scanner類的使用示例

    這篇文章主要介紹了Java Scanner類的使用示例,幫助大家更好的理解和學習java,感興趣的朋友可以了解下...

    算法與編程之美5042020-08-17
  • JAVA教程JDBC環境設置(中文詳解)

    JDBC環境設置(中文詳解)

    要開始使用JDBC設置,按照以下所示的步驟開發JDBC環境。以下內容假設Windows平臺上 ...

    java技術網3502019-11-14
  • JAVA教程Java Date類常用示例_動力節點Java學院整理

    Java Date類常用示例_動力節點Java學院整理

    在JDK1.0中,Date類是唯一的一個代表時間的類,但是由于Date類不便于實現國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理。這里簡單介...

    動力節點3302020-09-22
  • JAVA教程Springboot web項目打包實現過程解析

    Springboot web項目打包實現過程解析

    這篇文章主要介紹了Springboot web項目打包實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以...

    Auler4732020-08-31
主站蜘蛛池模板: www.色.con| 村妇超级乱淫伦小说全集 | 好爽轻点太大了太深了 | poren18日本老师hd | 2021国产精品视频 | 国产婷婷高清在线观看免费 | 丝瓜视频成人在线观看 | 欧美一区二区福利视频 | 久久无码人妻中文国产 | 久久99re热在线观看视频 | 亚洲精品在线免费看 | 末代皇帝无删减版在线观看 | 国产精品亚洲综合久久 | 99热久久这里只精品国产www | 国产麻豆流白浆在线观看 | 欧美一级乱妇老太婆特黄 | 婷婷中文 | 青青网站| 高h喷水荡肉爽文np肉色文 | 粉嫩高中生第一次不戴套 | 免费视频完整版在线观看网站 | 欧美特黄视频在线观看 | 人人爱操| 青青草99久久精品国产综合 | 99精品国产美女福到在线不卡 | 精品91自产拍在线观看99re | 国产欧美一区视频在线观看 | 四虎tv| 羞羞漫画免费漫画页面在线看漫画秋蝉 | 五月婷婷伊人网 | 免费观看小视频 | 无码精品一区二区三区免费视频 | 幸福草电视剧演员表介绍 | 亚洲精彩视频在线观看 | 99综合在线| 青苹果乐园影院免费观看完整版 | 亚洲区精品久久一区二区三区 | 欧美日韩国产亚洲一区二区三区 | 免费视频完整版在线观看网站 | 国产精品免费综合一区视频 | 嫩草影院永久一二三入口 |