这里写目录标题
【例 15.6] Person.java
package file;
import java.lang.reflect.Constructor;
interface China
{
public static final String NATIONAL = "China";
public static final String AUTHOR = "李华";
public void sayChina();
public String sayHello(String name,int age);
}
class Person implements China
{
private int age;
private String name;
public Person()
{
}
public Person(String name)
{
this.setName(name);
}
public Person(String name,int age)
{
this.setAge(age);
this.setName(name);
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public String getName() {
return this.name;
}
public void sayChina()
{
System.out.println("作者:"+ AUTHOR +",国籍:" + NATIONAL);
}
public String sayHello()
{
return "你好,"+this.name+"!我的年龄是"+this.age;
}
}
15.3.1取得所实现的全部接口
【例15.7]取得Person类实现的全部接口
Class<?> inter[] = c.getInterfaces();
inter[i].getName()
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");//实例化Class
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Class<?> inter[] = c.getInterfaces();
for(int i=0;i<inter.length;i++)
{
System.out.println("实现的全部接口:"+inter[i].getName());
}
}
}
15.3.2取得父类
【例15.8]取得Person的父类
Class<?> parentClass = c.getSuperclass();
System.out.println(parentClass.getName());
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");//实例化Class
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Class<?> parentClass = c.getSuperclass();
System.out.println(parentClass.getName());
}
}
15.3.3取得全部构造方法
【例15.9】取得Person类中的全部构造方法
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");//实例化Class
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Constructor<?> cons[] = c.getConstructors();
for(int i=0;i<cons.length;i++)
{
System.out.println("构造方法:"+cons[i]);
}
}
}
【例15.10】取得一个类的全部构造方法
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");//实例化Class
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Constructor<?> cons[] = c.getConstructors();
for(int i=0;i<cons.length;i++)
{
System.out.print("构造方法:"+ cons[i].getModifiers()+" "+cons[i].getName());
System.out.print("(");
Class<?> params[] = cons[i].getParameterTypes();//参数类型
for(int j=0;j<params.length;j++)
{
//参数类型的名称
System.out.print(params[j].getName()+" args"+i);
if(j<params.length-1)
{
System.out.print(",");
}
}
System.out.println(")");
}
}
}
【例15.11】使用Modifier还原修饰符
int mo = cons[i].getModifiers();
Modifier.toString(mo)
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");//实例化Class
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Constructor<?> cons[] = c.getConstructors();
for(int i=0;i<cons.length;i++)
{
int mo = cons[i].getModifiers();
System.out.print("构造方法:"+ Modifier.toString(mo)+" "+cons[i].getName());
System.out.print("(");
Class<?> params[] = cons[i].getParameterTypes();//参数类型
for(int j=0;j<params.length;j++)
{
//参数类型的名称
System.out.print(params[j].getName()+" args"+i);
if(j<params.length-1)
{
System.out.print(",");
}
}
System.out.println(")");
}
}
}
15.3.4取得全部方法
【例15.12】取得一个类的全部方法定义
// 修饰符: int mo = m[i].getModifiers();
// String str = Modifier.toString(mo);
// 返回类型: Class<?> returnType = m[i].getReturnType();
// 方法名称: m[i].getName()
// 参数类型: Class<?> params[] = m[i].getParameterTypes();
// 异常: Class<?> exception[] = m[i].getExceptionTypes();
public class demo {
public static void main(String[] args)
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");//实例化Class
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
Method m[] = c.getMethods();
// 修饰符: int mo = m[i].getModifiers();
// String str = Modifier.toString(mo);
// 返回类型: Class<?> returnType = m[i].getReturnType();
// 方法名称: m[i].getName()
// 参数类型: Class<?> params[] = m[i].getParameterTypes();
// 异常: Class<?> exception[] = m[i].getExceptionTypes();
for(int i=0;i<m.length;i++)
{
// 修饰符:public final native
int mo = m[i].getModifiers();
String str = Modifier.toString(mo);
System.out.print(str+" ");
// 返回类型:void
Class<?> returnType = m[i].getReturnType();
System.out.print(returnType.getName()+" ");
// 方法名称:java.lang.Object.wait
System.out.print(m[i].getName());
// 参数类型:long
System.out.print("(");
Class<?> params[] = m[i].getParameterTypes();
for(int j=0;j<params.length;j++)
{
System.out.print(params[j].getName() + " " + "args" + j);
if(j<params.length-1)
{
System.out.print(",");
}
}
// 异常:throws java.lang.InterruptedException
Class<?> exception[] = m[i].getExceptionTypes();
if(exception.length>0)System.out.print(") throws ");
else System.out.print(")");
for(int j=0;j<exception.length;j++)
{
System.out.print(exception[j].getName());
if(j<exception.length-1)System.out.print(",");
}
System.out.println();
}
}
}
15.3.5取得全部属性
//返回类型
Class<?> type = f[i].getType();
//修饰符
int mo = f[i].getModifiers();
String str = Modifier.toString(mo);
// 父类&&接口
Field f[] = c.getFields();
// 本类
Field f[] = c.getDeclaredFields();
public class demo {
public static void main(String[] args) throws Exception
{
Class<?> c = null;
try
{
c = Class.forName("file.Person");//实例化Class
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
// ##########################################################
{
// 父类&&接口
Field f[] = c.getFields();
for(int i=0;i<f.length;i++)
{
//返回类型
Class<?> type = f[i].getType();
//修饰符
int mo = f[i].getModifiers();
String str = Modifier.toString(mo);
System.out.println("父类&接口:"+str+" "+type.getName()+" "+f[i].getName());
}
}
// ##########################################################
System.out.println("-----------------------------");
{
// 本类
Field f[] = c.getDeclaredFields();
for(int i=0;i<f.length;i++)
{
// 修饰符
int mo = f[i].getModifiers();
String str = Modifier.toString(mo);
// 类型
Class<?> type = f[i].getType();
System.out.println("本类:"+ str +" "+type.getName()+" "+f[i].getName());
}
}
}
}