首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

反照机制看自省(探寻类自身的信息-属性/方法/构造方法)

2012-12-28 
反射机制看自省(探寻类自身的信息--属性/方法/构造方法)反射机制看自省(探寻类自身的信息--属性/方法/构造

反射机制看自省(探寻类自身的信息--属性/方法/构造方法)
反射机制看自省(探寻类自身的信息--属性/方法/构造方法)

public class TestReflection_1 {public static void main(String[] args) throws Exception {//反射中最常见的方式, 获得类对象Class class1 = Class.forName("com.reflection.Student");//class1.getName();//返回实体的名称//class1.getSimpleName//只获得类的名称//class1.getName()//获得这个类所在的包名+类名, 比如cn.com.michael.User//class1.getSuperClass//class1.getInterfaces 获得这个所实现的所有接口,返回一个类对象数组//class1.getFields()//获取此类以及此类的父类的所有属性,但不包括此类的私有属性//class1.getDeclaredFields()//获取此类的所有属性,包括私有属性,但获取不到父类的属性//首先,属性System.out.println("/**-------------属性-----------------*/");Field[] fs1 = class1.getFields();//获取不到本类的私有属性Field[] fs2 = class1.getDeclaredFields();System.out.println("class " + class1.getSimpleName() +"{");for(Field f:fs2){System.out.println("\t"+ f.getType().getSimpleName() + " " +f.getName() + ";");}//其次,方法System.out.println("/**-------------方法-----------------*/");Method[] methods1 = class1.getMethods();Method[] methods2 = class1.getDeclaredMethods();for(Method method:methods2){System.out.print("\t" + method.getReturnType().getSimpleName() + " " + method.getName() + "(");Class[] ps = method.getParameterTypes();for(Class cls:ps){System.out.print(cls.getSimpleName() + ",");}System.out.println("){}");}//最后,构造方法System.out.println("/**-------------构造方法-----------------*/");Constructor[] cons = class1.getConstructors();for(Constructor c:cons){System.out.print("\t" + class1.getSimpleName() +"(");Class[] ps = c.getParameterTypes();for(Class cls:ps){System.out.print(cls.getSimpleName() + ",");}System.out.println("){}");}System.out.println("}");}}class Student{private String name;private int age;public String hobby;public Student(){}public Student(String name, int age){this.name = name;this.age = age;}public void study(){System.out.println("Student " + name +" studies");}public String study(String course, int time){System.out.println("Student " + name +" studies " + course +" times" );if(time >=3)return "Good";return "Bad";}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public void setHobby(String hobby) {this.hobby = hobby;}}

热点排行