Java反射机制-学习笔记1(二)

2014-11-24 08:07:32 · 作者: · 浏览: 2
t getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}

public class ReflectTest {
public static void main(String[] args){
Class< > personClass = null;
Person person1 = null;
Person person2 = null;
Person person3 = null;
Person person4 = null;
Constructor constructors[] = new Constructor[4];

try {
personClass = Class.forName("org.zhang.test.Person");
} catch (ClassNotFoundException e) {
System.out.println("没有找到Person 类");
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}

if (personClass != null) {
try {
constructors[0] = personClass.getConstructor();
constructors[1] = personClass.getConstructor(String.class);
constructors[2] = personClass.getConstructor(int.class);
constructors[3] = personClass.getConstructor(String.class, int.class);

person1 = (Person) constructors[0].newInstance();
person2 = (Person) constructors[1].newInstance("shiwoo");
person3 = (Person) constructors[2].newInstance(25);
person4 = (Person) constructors[3].newInstance("shiwoo", 25);

System.out.println(person1);
System.out.println(person2);
System.out.println(person3);
System.out.println(person4);
} catch (NoSuchMethodException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (InstantiationException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (IllegalAccessException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
} catch (InvocationTargetException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}

}
}
}

结果:
Person{name='no name', age=0}
Person{name='shiwoo', age=0}
Person{name='no name', age=25}
Person{name='shiwoo', age=25}

实例5:获取某个类所实现的所有接口

[java]
package org.zhang.test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

interface Chiness{
void say();
}

class Person implements Chiness{
@Override
public void say() {
System.out.println("我是中国人");
}
}

public class ReflectTest {
public static void main(String[] args){

Class< > personClass = null;
Class< >[] interfaces = null;
try {
personClass = Class.forName("org.zhang.test.Person");
interfaces = personClass.getInterfaces();
for (Class< > c : interfaces){
System.out.println(c.getName());
}

} catch (ClassNotFoundException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}

}
}

结果:
org.zhang.test.Chiness

实例6:获取父类

[java]
public class ReflectTest {
public static void main(String[] args){

Cl