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);
}
}