package org.lxh.demo15.classinfodemo ; import java.lang.reflect.Constructor ; // 导入构造方法的包 public class GetConstructorDemo01{ public static void main(String args[]){ Class<?> c1 = null ; // 声明Class对象 try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象 }catch(ClassNotFoundException e){ e.printStackTrace() ; } Constructor<?> con[] = c1.getConstructors() ; // 取得一个类中的全部构造 for(int i=0;i<con.length;i++){ System.out.println("构造方法:" + con[i]) ; // 输出构造,直接打印 } } };
package org.lxh.demo15.classinfodemo ; import java.lang.reflect.Constructor ; // 导入构造方法的包 public class GetConstructorDemo02{ public static void main(String args[]){ Class<?> c1 = null ; // 声明Class对象 try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象 }catch(ClassNotFoundException e){ e.printStackTrace() ; } Constructor<?> con[] = c1.getConstructors() ; // 取得一个类中的全部构造 for(int i=0;i<con.length;i++){ Class<?> p[] = con[i].getParameterTypes() ; // 得到构造方法中的全部参数 System.out.print("构造方法:" ) ; // 输出构造,直接打印 System.out.print(con[i].getModifiers() + " ") ; // 得到修饰符 System.out.print(con[i].getName()) ; // 取得构造方法的名字 System.out.print("(") ; for(int j=0;j<p.length;j++){ System.out.print(p[j].getName() + " arg" + i) ; if(j<p.length-1){ // 判断此是否是最后一个参数 System.out.print(","); // 输出“,” } } System.out.println("){}") ; } } };
package org.lxh.demo15.classinfodemo ; import java.lang.reflect.Constructor ; // 导入构造方法的包 import java.lang.reflect.Modifier ; // 导入构造方法的包 public class GetConstructorDemo03{ public static void main(String args[]){ Class<?> c1 = null ; // 声明Class对象 try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象 }catch(ClassNotFoundException e){ e.printStackTrace() ; } Constructor<?> con[] = c1.getConstructors() ; // 取得一个类中的全部构造 for(int i=0;i<con.length;i++){ Class<?> p[] = con[i].getParameterTypes() ; // 得到构造方法中的全部参数 System.out.print("构造方法:" ) ; // 输出构造,直接打印 int mo = con[i].getModifiers() ; // 得到所要的访问权限 System.out.print(Modifier.toString(mo) + " ") ; // 得到修饰符 System.out.print(con[i].getName()) ; // 取得构造方法的名字 System.out.print("(") ; for(int j=0;j<p.length;j++){ System.out.print(p[j].getName() + " arg" + i) ; if(j<p.length-1){ // 判断此是否是最后一个参数 System.out.print(","); // 输出“,” } } System.out.println("){}") ; } } };
package org.lxh.demo15.classinfodemo ; import java.lang.reflect.Field ; // 导入构造方法的包 import java.lang.reflect.Modifier ; // 导入构造方法的包 public class GetFieldDemo{ public static void main(String args[]){ Class<?> c1 = null ; // 声明Class对象 try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象 }catch(ClassNotFoundException e){ e.printStackTrace() ; } { // 本类属性 Field f[] = c1.getDeclaredFields() ; // 取得本类中的属性 for(int i=0;i<f.length;i++){ Class<?> r = f[i].getType() ; // 得到属性类型 int mo = f[i].getModifiers() ; // 得到修饰符的数字 String priv = Modifier.toString(mo) ; // 还原修饰符 System.out.print("本类属性:") ; System.out.print(priv + " ") ; System.out.print(r.getName() + " ") ; // 得到属性类型 System.out.print(f[i].getName()) ; // 输出属性名称 System.out.println(" ;") ; } } { // 公共属性 Field f[] = c1.getFields() ; // 取得本类中的公共属性 for(int i=0;i<f.length;i++){ Class<?> r = f[i].getType() ; // 得到属性类型 int mo = f[i].getModifiers() ; // 得到修饰符的数字 String priv = Modifier.toString(mo) ; // 还原修饰符 System.out.print("公共属性:") ; System.out.print(priv + " ") ; System.out.print(r.getName() + " ") ; // 得到属性类型 System.out.print(f[i].getName()) ; // 输出属性名称 System.out.println(" ;") ; } } } };
package org.lxh.demo15.classinfodemo ; public class GetInterfaceDemo{ public static void main(String args[]){ Class<?> c1 = null ; // 声明Class对象 try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象 }catch(ClassNotFoundException e){ e.printStackTrace() ; } Class<?> c[] = c1.getInterfaces() ; // 以数组形式返回实现的全部接口 for(int i=0;i<c.length;i++){ System.out.println("实现的接口名称:" + c[i].getName()) ; // 输出接口名称 } } };
package org.lxh.demo15.classinfodemo ; import java.lang.reflect.Method ; // 导入构造方法的包 import java.lang.reflect.Modifier ; // 导入构造方法的包 public class GetMethodDemo{ public static void main(String args[]){ Class<?> c1 = null ; // 声明Class对象 try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象 }catch(ClassNotFoundException e){ e.printStackTrace() ; } Method m[] = c1.getMethods() ; // 取得全部方法 for(int i=0;i<m.length;i++){ Class<?> r = m[i].getReturnType() ; // 得到返回值类型 Class<?> p[] = m[i].getParameterTypes() ; // 取得全部参数的类型 int xx = m[i].getModifiers() ; // 得到修饰符 System.out.print(Modifier.toString(xx) + " ") ; // 输出修饰符 System.out.print(r + " ") ; System.out.print(m[i].getName()) ; System.out.print("(") ; for(int j=0;j<p.length;j++){ System.out.print(p[j].getName() + " " + "arg" + j) ; if(j<p.length-1){ System.out.print(",") ; } } Class<?> ex[] = m[i].getExceptionTypes() ; // 取出异常 if(ex.length>0){ System.out.print(") throws ") ; }else{ System.out.print(")") ; } for(int j=0;j<ex.length;j++){ System.out.print(ex[j].getName()) ; if(j<p.length-1){ System.out.print(",") ; } } System.out.println() ; } } };
package org.lxh.demo15.classinfodemo ; public class GetSuperClassDemo{ public static void main(String args[]){ Class<?> c1 = null ; // 声明Class对象 try{ c1 = Class.forName("org.lxh.demo15.Person") ; // 实例化对象 }catch(ClassNotFoundException e){ e.printStackTrace() ; } Class<?> c2 = c1.getSuperclass() ; // 取得父类 System.out.println("父类名称:" + c2.getName()) ; } };
package org.lxh.demo15 ; interface China{ // 定义China接口 public static final String NATIONAL = "China" ; // 定义全局常量 public static final String AUTHOR = "李兴华" ; // 定义全局常量 public void sayChina() ; // 无参的,没有返回值的方法 public String sayHello(String name,int age) ; // 定义有两个参数的方法,并返回内容 } public class Person implements China{ private String name ; private int age ; public Person(){ // 无参构造 } public Person(String name){ this.name = name ; // 设置name属性 } public Person(String name,int age){ this(name) ; this.age = age ; } public void sayChina(){ // 覆写方法 System.out.println("作者:" + AUTHOR + ",国籍:" + NATIONAL) ; } public String sayHello(String name,int age){ return name + ",你好!我今年:" + age + "岁了!" ; } public void setName(String name){ this.name = name ; } public void setAge(int age){ this.age = age ; } public String getName(){ return this.name ; } public int getAge(){ return this.age ; } };