interface China { public static final String NATIONL="中国";//国籍 public static final String NAME="wjl";//姓名 public void getBasicInfo(); public String setBasicInfo(String userName,String pwd); } public class Person implements China{ private String userName; private String passWord; //构造方法 public Person(){} public Person(String userName) { this.userName = userName; } public Person(String userName, String passWord) { this(userName);//调用一个参数的构造方法 this.passWord = passWord; } //父类方法 public void getBasicInfo() { System.out.println("国籍:"+NATIONL+",姓名:"+NAME); } public String setBasicInfo(String userName, String pwd) { return "用户名:"+userName+",密码:"+pwd; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } }1、获取接口信息和父类信息:
public static void main(String[] args) { Class<?> c = null; try{ c = Class.forName("com.wjl.reflect.Person"); //1、获取所有的接口信息 Class<?> interfaces[] = c.getInterfaces(); System.out.println("\n接口:"); for(int j=0;j<interfaces.length;j++){ System.out.println(interfaces[j].getName()); } //2、获取父类信息 Class<?> parentClass = c.getSuperclass(); System.out.println("\n父类信息:\n"+parentClass); }catch(Exception e){ e.printStackTrace(); } }
2、获取属性:
public static void main(String[] args) { try{ Class<?> c = Class.forName("com.wjl.reflect.Person"); Field field[] = c.getDeclaredFields();//获取公用属性 System.out.println("本类中的属性:"); for(int i=0;i<field.length;i++){ System.out.println("系统:"+field[i]); System.out.print("自定义:"); getFieldInfo(field[i]); } //公共属性 Field fields[] = c.getFields(); System.out.println("\n公共属性:"); for(int i=0;i<fields.length;i++){ System.out.println("系统:"+fields[i]); System.out.print("自定义:"); getFieldInfo(fields[i]); } }catch(Exception e){ e.printStackTrace(); } } //该方法用来获取各个属性信息 public static void getFieldInfo(Field field){ System.out.print(Modifier.toString(field.getModifiers())+" ");//修饰符 System.out.print(field.getType().getName()+" ");//数据类型 System.out.print(field.getName());//方法名称 System.out.println(";"); }
3、获取方法:
public static void main(String[] args) { Class<?> c = null; try{ c = Class.forName("com.wjl.reflect.Person"); //1、获取本类中的所有方法 Method[] methods = c.getDeclaredMethods(); System.out.println("\n本类中的所有方法:"); for(int i=0;i<methods.length;i++){ // System.out.println("系统:"+methods[i]); System.out.print("自定义:"); getMethodInfo(methods[i]); } //2、输出全部方法:本类中的方法+父类中的方法 Method[] methodes = c.getMethods(); System.out.println("\n本类和父类的所有方法:"); for(int i=0;i<methodes.length;i++){ System.out.println("系统:"+methodes[i]); System.out.print("自定义:"); getMethodInfo(methodes[i]); } }catch(Exception e){ e.printStackTrace(); } } //获取方法信息 public static void getMethodInfo(Method method){ System.out.print(Modifier.toString(method.getModifiers())+" ");//修饰符 System.out.print(method.getReturnType().getName()+" ");//返回值类型 System.out.print(method.getName());//方法名称 //各个参数 Class<?> parames[] = method.getParameterTypes(); System.out.print("("); for(int i=0;i<parames.length;i++){ System.out.print(parames[i].getName()+" arg"+i);//参数名称 if(i<parames.length-1){//添加逗号隔开 System.out.print(","); } } System.out.print(")"); //获取异常信息 Class<?> ex[] = method.getExceptionTypes(); if(ex.length>0){//说明有异常 System.out.print(" throws "); for(int j=0;j<ex.length;j++){ System.out.print(ex[j].getName()); if(j<ex.length-1) System.out.print(","); } } System.out.println(); }