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

2014-11-24 10:41:15 · 作者: · 浏览: 1
d)
{
//返回一个class数组
return new Class[]{String.class};
}

//这里是私有的
private void aa1(InputStream in)
{
System.out.println(in);
}

//这里是静态方法
public static void aa1(int num)
{
System.out.println(num);
}


//调用main方法
public static void main(String[] args)
{
System.out.println("main");
}

}

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class Person
{
public String name = "name1";

private int password = 123;
private static int age = 23;
public Person()
{
System.out.println("Person");
}

public Person(String name)
{
System.out.println(name);
System.out.println("Person name");
}

public Person(String name, int password)
{
System.out.println(name + ";" + password);
}

private Person(List list)
{
System.out.println("list");
}

//*****************下面的是讲的 反射方法*************
public void aa1()
{
System.out.println("aa1");
}

public void aa1(String name, int password)
{
System.out.println(name + ":" + password);
}

public Class[] aa1(String name , int[] password)
{
//返回一个class数组
return new Class[]{String.class};
}

//这里是私有的
private void aa1(InputStream in)
{
System.out.println(in);
}

//这里是静态方法
public static void aa1(int num)
{
System.out.println(num);
}


//调用main方法
public static void main(String[] args)
{
System.out.println("main");
}

}

***************************************************邪恶的分割线**********************************************************************************************************************

//反射构造函数


[java]
import java.lang.reflect.Constructor;
import java.util.*;

public class Demo
{

/**反射类的构造函数,创建类的对象
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
//test1();
//test2();
//test3();
//test4();
test5();
}

// 反射构造函数 public Person()
public static void test1() throws Exception
{
//加载类
Class clazz = Class.forName("cn.com.day1.Person");
//加载类后可以反射出类中的构造方法
Constructor c = clazz.getConstructor(null);

Person p = (Person)c.newInstance(null);

System.out.println(p.name);
}


// 反射构造函数 public Person(String name)

public static void test2() throws Exception
{
//加载类
Class clazz = Class.forName("cn.com.day1.Person");
//加载类后可以反射出类中的构造方法
Constructor c = clazz.getConstructor(String.class);
Person p = (Person)c.newInstance("xxxxxx");
System.out.println(p.name);
}

// 反射构造函数 Person(String name, int password)

public static void test3() throws Exception
{
//加载类
Class clazz = Class.forName("cn.com.day1.Person");
Constructor c = clazz.getConstructor(String.class,int.class);
Person p = (Person)c.newInstance("两个参数", 2);
System.out.println(p.name);
}

// 反射构造函数 Person(List list)

public static void test4() throws Exception
{
//加载类
Class clazz = Class.forName("cn.com.day1.Person");
//因为这里是私有的所以必须用getDeclaredxxx xxx代表可能是方法 构造方法 成员变量等
Constructor c = clazz.getDecla