kingfish 2005.3
今天看到一個關於通過反射如何得到數組類型的問題,試了試,可以通過Array類解決。
做個記錄。
代碼如下:
import Java.lang.reflect.*;
/** * @author kingfish * * TODO Java reflect */class MyString{ public MyString(String s){ System.out.println("in constructor of the MyString"); } }
public class TestReflect { /** * 構造函數 * @param i */ public TestReflect(int i){ System.out.println("just for test"); } public void test(){ } public void test(MyString s){ } public void test(MyString[] args){ } public static void main(String[] args) throws Exception{ Class c = Class.forName("TestReflect"); Method m = c.getMethod("test", new Class[]{}); System.out.println(m); //反射test(MyString)方法 m = c.getMethod("test", new Class[]{MyString.class}); System.out.println(m); //反射test(MyString)方法, 並且要求MyString類也需要反射獲得 m = c.getMethod("test", new Class[]{Class.forName("MyString")}); System.out.println(m); //反射test(MyString[])方法, 要求MyString[] 類型也反射獲得 //Array.newInstance返回類型數組,並不產生類的實例 m = c.getMethod("test", new Class[]{Array.newInstance(Class.forName("MyString"),1).getClass()}); System.out.println(m); }}