黑马程序员------新特性反射 (五)

2014-11-24 10:41:15 · 作者: · 浏览: 4
p, "zhang", 38);

}

// 反射类的方法public Class[] aal(String name,int[] password) 第三个
@Test
public void test3() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");

Method method = clazz.getMethod("aa1", String.class, int[].class);

Class cs[] = (Class[]) method.invoke(p, "aaa", new int[] { 1, 23 });

System.out.println(cs[0]);
}

// 反射类的方法public void aal(InputStream in) 第四个
@Test
public void test4() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");
// getDeclared 显示私有的
Method method = clazz.getDeclaredMethod("aa1", InputStream.class);

method.setAccessible(true);// 暴力反射
Class cs[] = (Class[]) method.invoke(p,
new FileInputStream("d:\\a.java.txt"));
}

// 反射类的方法public static void aa1(int num)第五个
@Test
public void test5() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");
Method method = clazz.getMethod("aa1", int.class);
method.invoke(p, 23);
//method.invoke(null, 23);因为是静态的可以用这个


}

//反射类的方法: public static void main(String[] args)
@Test
public void test6() throws Exception
{
Class clazz = Class.forName("cn.com.day1.Person");
Method method = clazz.getMethod("main", String[].class);
//method.invoke(null,new Object[] {new String[]{"aa","bb"}});
method.invoke(null,(Object)new String[]{"aa","bb"});



}

}

import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Method;

import org.junit.Test;

public class Demo2
{

// 反射类的方法public void aal() 第一个
// invoke是调用方法.使用Junit
@Test
public void test1() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");

Method method = clazz.getMethod("aa1", null);

method.invoke(p, null);
}

// 反射类的方法public void aal(String name,int password) 第二个
@Test
public void test2() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");

Method method = clazz.getMethod("aa1", String.class, int.class);
method.invoke(p, "zhang", 38);

}

// 反射类的方法public Class[] aal(String name,int[] password) 第三个
@Test
public void test3() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");

Method method = clazz.getMethod("aa1", String.class, int[].class);

Class cs[] = (Class[]) method.invoke(p, "aaa", new int[] { 1, 23 });

System.out.println(cs[0]);
}

// 反射类的方法public void aal(InputStream in) 第四个
@Test
public void test4() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");
// getDeclared 显示私有的
Method method = clazz.getDeclaredMethod("aa1", InputStream.class);

method.setAccessible(true);// 暴力反射
Class cs[] = (Class[]) method.invoke(p,
new FileInputStream("d:\\a.java.txt"));
}

// 反射类的方法public static void aa1(int num)第五个
@Test
public void test5() throws Exception
{
Person p = new Person();
Class clazz = Class.forName("cn.com.day1.Person");
Method method = clazz.getMethod("aa1", int.class);
method.invoke(p, 23);
//method.invoke(null, 23);因为是静态的可以用这个