簡體   English   中英

使用Java反射,如何獲取方法的參數化參數類型?

[英]Using Java reflection, how do I get parameterized types of parameters to a Method?

假設我有一個方法:

public void method(LinkedList<Integer> intList);

我使用反射來獲取此方法的java.lang.reflect.Method,並且我想獲取ParameterizedType,即。 LinkedList <整數>。

不幸的是,使用Method.getParameterTypes()我似乎只能得到非參數化的類Class <LinkedList>。

但是,在調試器中,如果我查看Method對象,我會發現有一個“簽名”字段,該字段似乎包含通用信息:

(Ljava/util/LinkedList<Ljava/lang/Integer;>;)V

那么如何從Method對象獲取LinkedList參數化類型?

使用Method.getGenericParameterTypes 樣例代碼:

import java.lang.reflect.*;
import java.util.*;

public class Test {

    public void foo(LinkedList<Integer> intList) {
    }

    public static void main(String[] args) throws Exception {
        Method method = Test.class.getMethod("foo", LinkedList.class);
        Type[] parameters = method.getGenericParameterTypes();
        System.out.println(parameters[0]);
    }
}

輸出:

java.util.LinkedList<java.lang.Integer>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM