最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年06月05日 08:17:49   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava反射之方法反射的基本操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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)分別獲取該類三個方法并執(zhí)行

public class Test {
  public static void main(String[] args) {
    /**
     * 獲取print(int,int)方法
     * 1、獲取類的類類型
     */
    A a1 = new A();
    Class clazz = a1.getClass();
    /**
     * 2、獲取方法(名稱、參數(shù)列表)
     * 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對象進行方法調(diào)用,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、完整代碼

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、獲取方法(名稱、參數(shù)列表)
     * 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對象進行方法調(diào)用,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、執(zhí)行結(jié)果

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

您可能感興趣的文章:

相關(guān)文章

  • 詳解Java虛擬機管理的內(nèi)存運行時數(shù)據(jù)區(qū)域

    詳解Java虛擬機管理的內(nèi)存運行時數(shù)據(jù)區(qū)域

    這篇文章主要介紹了詳解Java虛擬機管理的內(nèi)存運行時數(shù)據(jù)區(qū)域的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • springboot2.6.3讀取不到nacos上的配置文件問題

    springboot2.6.3讀取不到nacos上的配置文件問題

    這篇文章主要介紹了springboot2.6.3讀取不到nacos上的配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • jmeter添加自定函數(shù)的實例(jmeter5.3+IntelliJ IDEA)

    jmeter添加自定函數(shù)的實例(jmeter5.3+IntelliJ IDEA)

    這篇文章主要介紹了jmeter添加自定函數(shù)的實例(jmeter5.3+IntelliJ IDEA),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Intellij IDEA實現(xiàn)SpringBoot項目多端口啟動的兩種方法

    Intellij IDEA實現(xiàn)SpringBoot項目多端口啟動的兩種方法

    有時候使用springboot項目時遇到這樣一種情況,用一個項目需要復(fù)制很多遍進行測試,除了端口號不同以外,沒有任何不同。遇到這種情況怎么辦呢?這時候可以使用Intellij IDEA解決
    2018-06-06
  • Java高性能緩存框架之Caffeine詳解

    Java高性能緩存框架之Caffeine詳解

    這篇文章主要介紹了Java高性能緩存框架之Caffeine詳解,Caffeine是一個基于Java8的高性能緩存框架,號稱趨于完美,Caffeine受啟發(fā)于Guava?Cache的API,使用API和Guava是一致的,需要的朋友可以參考下
    2023-12-12
  • SpringSecurity JWT基于令牌的無狀態(tài)認證實現(xiàn)

    SpringSecurity JWT基于令牌的無狀態(tài)認證實現(xiàn)

    Spring Security中實現(xiàn)基于JWT的無狀態(tài)認證是一種常見的做法,本文就來介紹一下SpringSecurity JWT基于令牌的無狀態(tài)認證實現(xiàn),感興趣的可以了解一下
    2025-04-04
  • iOS socket網(wǎng)絡(luò)編程實例詳解

    iOS socket網(wǎng)絡(luò)編程實例詳解

    socket是一個針對TCP和UDP編程的接口,你可以借助它建立TCP連接等。這篇文章主要介紹了iOS socket網(wǎng)絡(luò)編程 ,需要的朋友可以參考下
    2017-03-03
  • Spring Boot2.3 新特性分層JAR的使用

    Spring Boot2.3 新特性分層JAR的使用

    這篇文章主要介紹了Spring Boot2.3 新特性分層JAR的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Action訪問Servlet的API的簡單實例

    Action訪問Servlet的API的簡單實例

    下面小編就為大家?guī)硪黄狝ction訪問Servlet的API的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java開發(fā)推薦使用的JDK版本以及對比詳細分析

    Java開發(fā)推薦使用的JDK版本以及對比詳細分析

    這篇文章詳細分析了JDK17和JDK21作為當(dāng)前推薦版本的優(yōu)缺點,并對比了它們與JDK8和JDK11的差異,文中介紹的非常詳細,對大家學(xué)習(xí)或者使用java具有一定的參考借鑒價值,需要的朋友可以參考下
    2025-04-04

最新評論

称多县| 昭通市| 涪陵区| 页游| 襄城县| 奉新县| 安平县| 孟津县| 革吉县| 宜宾市| 刚察县| 吴忠市| 凉城县| 会昌县| 天镇县| 宜川县| 平湖市| 馆陶县| 富锦市| 新疆| 通州市| 凉城县| 隆昌县| 东平县| 湘潭县| 乐清市| 高雄市| 古蔺县| 沂水县| 盐池县| 广宗县| 新密市| 漳州市| 玛多县| 长武县| 新干县| 静宁县| 宜春市| 格尔木市| 阿荣旗| 深泽县|