下面是一個示例代碼如何判斷一個方法是否有使用反射的可變參數?
package org.example;
import java.lang.reflect.Method;
class TestRef {
public void testA(String ... a) {
for (String i : a) {
System.out.println(i);
}
}
public static void main(String[] args){
Class testRefClass = TestRef.class;
for (Method m: testRefClass.getMethods()) {
if (m.getName() == "testA") {
System.out.println(m);
}
}
}
}
輸出是
public void org.example.TestRef.testA(java.lang.String[])
所以方法的簽名被報告給取字符串的數組。
在反射庫中是否有任何意思我可以告訴方法是原來聲明爲可變參數嗎?
還應該注意的是,method.getModifiers()將爲可變參數方法設置Modifier.TRANSIENT位。 – ILMTitan 2010-06-15 14:33:34
@ILMTitan - 我不明白爲什麼值得注意。 「瞬態」修飾符對於一種方法沒有意義。該位僅被設置,因爲相應的類文件標誌位在不同的上下文中用於不同的事情;即TRANSIENT和VARARGS位是相同的位。 – 2012-11-26 01:46:03