1. 程式人生 > >Java 反射呼叫方法的引數是陣列的寫法

Java 反射呼叫方法的引數是陣列的寫法

package com.heatdeath.fight.sort;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Random;

/**
 * Author:  heatdeath
 * Date:    2018/8/19
 * Desc:
 */
public class SortUtil {
    public static void swap(Integer[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public
static <T> void testSortMethod(Class<T> clazz) throws Exception { Random random = new Random(); Integer[] arr = new Integer[20]; for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(100); } System.out.println(Arrays.toString(arr)); Method sortMethod = clazz.getMethod("sort"
, Integer[].class); sortMethod.invoke(clazz.newInstance(), (Object) arr); System.out.println(Arrays.toString(arr)); boolean flag = true; for (int i = 1; i < arr.length; i++) { if (!flag) { break; } if (arr[i] < arr[i - 1
]) { flag = false; } } System.out.println("arr is sorted : " + flag); } }

注意:

getMethod() 方法第二個引數直接寫 Integer[].class 就可以
但是在 method.invoke() 方法的第二個引數要 使用 (Object)arr 進行強制的型別轉換!

相關推薦

Java 反射呼叫方法引數陣列寫法

package com.heatdeath.fight.sort; import java.lang.reflect.Method; import java.util.Arrays; import j

java工具類-接受請求引數,並利用反射呼叫方法

public String a(HttpServletRequest request,HttpServletResponse response) throws JSONException, IOException, ParseException, IllegalAccessException, Ille

java通過反射呼叫不同引數方法

import java.lang.reflect.Method; public class testReflect { /** * @param args */ public sta

SpringMVC原始碼學習之request處理流程 springMVC原始碼學習地址 springMVC原始碼學習之addFlashAttribute原始碼分析 java reflect反射呼叫方法invoke

目的:為看原始碼提供呼叫地圖,最長呼叫邏輯深度為8層,反正我是springMVC原始碼學習地址看了兩週才理出來的。 1.處理流程(版本為4.3.18) 入口為spring-webmvc-4.3.18.RELEASE.jar中org.springframework.web.servlet.Dispatche

Java 反射呼叫類的屬性和方法(包含父類私有屬性和覆蓋重寫的方法等)

前面介紹了,反射呼叫類的構造方法來建立類的例項物件。一個類的結構包含方法(構造,靜態,非靜態)和屬性(靜態和非靜態)。按照迴圈漸進的方式,接下來,介紹反射類中屬性和普通的方法。 在這裡簡單介紹,反射呼叫屬性和方法會用到的新類,Method類和Field類。

根據物件中欄位屬性值,動態java反射呼叫相應的get方法

根據物件中欄位屬性值,動態呼叫相應的get方法 #### 舉個例子,把物件GoodsVO中的欄位作為key, get方法作為value,全部存放在Map中. //商品物件 public class GoodsVO { /** * 品牌ID */

java反射獲取方法以及呼叫方法

Java反射獲取方法以及呼叫方法 獲取方法 1.先找到方法所在類的位元組碼 2.找到需要被獲取的方法 Class類中獲取方法: public Method[] getMethods();//獲取包括自身和繼承(實現)過來的所有的public方法——Method不支援泛型&l

C#通過反射獲取類中的方法引數個數,反射呼叫方法引數

using System; using System.Reflection; namespace ConsoleApp2 { class Program { static void Main(string[] args)

java 通過反射獲取方法引數列表名稱

說明             一般情況下是使用不到用反射來獲取引數列表名稱的,只要知道引數列表的型別就可以執行某一個引數了,因為引數名稱是給開發人員用的,執行時引數名稱不起作用。 所以 JDK 本身是沒有獲取引數列表名稱的。          如果要寫框架一類的東西,比

java反射呼叫Bean指定方法

步驟:    一:獲取到bean的物件,方式有兩種,        1.通過Spring上下文獲取到bean物件Object object = SpringContextUtils.getBean(tableName+"Service"); Class sel

利用反射呼叫方法時,處理ref,out引數需要注意的問題

專案中如下的泛型方法,因為要在執行時,動態指定型別引數,所以要利用反射來實現。 public static TR Deserialize<TR>(byte[] source, ref int offset) 一般做法如下: // 變數 type是該方法所在

Java泛型 通過反射獲得方法引數中的變數類名和泛型

通過反射獲得方法引數中的變數類名和泛型 package test; import java.lang.reflect.Method; import java.lang.reflect.Paramet

java反射呼叫指定jar包中的類和方法

需求:動態載入jar包,例項化jar包中的類,並呼叫類中的方法 已知:jar包所在路徑和jar包名稱,類名已知,類繼承的抽象類可以被引入,類中的方法已知 實現方法: 1. 手動呼叫類載入器動態載入jar包; 2. 應用java中的反射例項化類,得到類的一個例項; 3. 運

java中,方法引數是基本型別和引用型別的區別

方法引數是基本型別時,傳遞的是值。 方法引數是引用型別時,傳遞的是記憶體地址值 當引數是基本型別時,在呼叫方法時將值傳遞到方法中,執行方法,執行結束方法退出,對原本main中定義的變數沒有任何操作(方法中沒有return)。即:此時只跟棧有關係,方法執行完之後(方法中沒有return),會彈棧。

原 .NET/C# 反射的的效能資料,以及高效能開發建議(反射獲取 Attribute 和反射呼叫方法

  大家都說反射耗效能,但是到底有多耗效能,哪些反射方法更耗效能;這些問題卻沒有統一的描述。    本文將用資料說明反射各個方法和替代方法的效能差異,並提供一些反射程式碼的編寫建議。為了解決反射的效能問題,你可以遵循本文采用的各種方案。    本文內容    反射各方法的效能資料    反射的高效能開發建議 

Java動態呼叫複雜引數的WebService【精選彙總篇一】

                    Java如何動態的呼叫WebService? 一定時動態、動態、動態...不是動態就不是想要的解決方案。(本篇正在更新中..可以關注後,持續探討)

JAVA基礎-5.方法陣列

1:方法(掌握) (1)方法:就是完成特定功能的程式碼塊。 注意:在很多語言裡面有函式的定義,而在Java中,函式被稱為方法。 (2)格式: 修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名

java 反射呼叫Service導致Spring注入Dao失效

反射簡介    反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;    對於任意一個物件,都能夠呼叫它的任意一個方法和屬性;這種動態獲取的資訊以及    動態呼叫物件的方法的功能稱為java語言的反射機制。

OSGi bundle之間通過反射呼叫方法

兩個bundle之間不通過pom檔案引入jar包方式呼叫另一個方法,通過反射的方式呼叫。 前提:被呼叫的方法的bundle需要配置  <Export-Package> 要提供的被引用的包</Export-Package> 呼叫方需要配置 <I

Java反射之——方法反射操作

Java反射中 ,方法的反射操作是通過Method物件呼叫invoke(物件,引數)方法,之前我們需要知道怎樣來確定一個方法? 注:通過方法名和引數列表我們可以唯一確定一個方法。 首先我們獲取方法就是獲取類中的資訊,獲取類的資訊需要得到類型別,因此我們通過已知A的例項物件a1,呼叫getCl