package cn.lnu.reflect;
import java.io.FileInputStream;
import java.io.InputStream;
import java.lang.reflect.Method;
import org.junit.Test;
//������ķ���
public class Demo3 {
//������ķ���:public void aa(){
@Test
public void test1() throws Exception{
//Person p=new Person();
Class clazz=Class.forName("cn.lnu.reflect.Person");
Person p=(Person) clazz.newInstance();
Method method=clazz.getMethod("aa", null);
method.invoke(p,null);//�������������ʱ��Ҫָ��������������Ķ������ĸ����Լ����������Ҫʲô����
}
//������ķ���:public void aa(String name,int password){
@Test
public void test2() throws Exception{
//Person p=new Person();
Class clazz=Class.forName("cn.lnu.reflect.Person");
Person p=(Person) clazz.newInstance();
Method method=clazz.getMethod("aa", String.class,int.class);//��Ҫָ��Ҫ���䷽���IJ�������
method.invoke(p,"mushroom",123456);//�������������ʱ��Ҫָ��������������Ķ������ĸ����Լ����������Ҫʲô����
}
//������ķ���:public Class[] aa(String name,int[] password){
@Test
public void test3() throws Exception{
//Person p=new Person();
Class clazz=Class.forName("cn.lnu.reflect.Person");
Person p=(Person) clazz.newInstance();
Method method=clazz.getMethod("aa", String.class,int[].class);//��Ҫָ��Ҫ���䷽���IJ�������
Class clazz1[]=(Class[]) method.invoke(p,"mushroom",new int[]{1,2,3});//�������������ʱ��Ҫָ��������������Ķ������ĸ����Լ����������Ҫʲô����
System.out.println(clazz1[0]);
}
//������ķ���:private void aa(InputStream in){
@Test
public void test4() throws Exception{
//Person p=new Person();
Class clazz=Class.forName("cn.lnu.reflect.Person");
Person p=(Person) clazz.newInstance();
Method method=clazz.getDeclaredMethod("aa", InputStream.class);//��Ҫָ��Ҫ���䷽���IJ������ͣ�˽�з�����Ҫʹ��getDeclaredMethod�������ñ�����˽������
method.setAccessible(true);
method.invoke(p,new FileInputStream("c:\\1.txt"));//�������������ʱ��Ҫָ��������������Ķ������ĸ����Լ����������Ҫʲô����
}
//������ķ���:public static void aa(int num){
@Test
public void test5() throws Exception{
Class clazz=Class.forName("cn.lnu.reflect.Person");
Method method=clazz.getMethod("aa", int.class);//��Ҫָ��Ҫ���䷽���IJ�������
method.invoke(null,2);//��̬�������������ʱ����Ҫָ��������������Ķ������ĸ�����null���У���Ȼ���ݸ���������ԣ���λ���ָ�����������Ҫʲô����
}
//�������Main����:public static void main(String[] args){
@Test
public void test6() throws Exception{
Class clazz=Class.forName("cn.lnu.reflect.Person");
Method method=clazz.getMethod("main", String[].class);//��Ҫָ��Ҫ���䷽���IJ�������
//method.invoke(null,new Object[]{new String[]{"hello","world"}});//��̬�������������ʱ����Ҫָ��������������Ķ������ĸ�����null���У���Ȼ���ݸ���������ԣ���λ���ָ�����������Ҫʲô����
method.invoke(null,(Object)new String[]{"hello","world"});//��̬�������������ʱ����Ҫָ��������������Ķ������ĸ�����null���У���Ȼ���ݸ���������ԣ���λ���ָ�����������Ҫʲô����
}
}