`
筱爪哇
  • 浏览: 4528 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

反射机制

 
阅读更多
[color=red][/color]Teacher tea = new Teacher();
//tea对象得到Teacher对象
Class c1 =tea.getClass();
//通过类名.class关键字
Class c2 = Teacher.class;
//Class.forName
Class c3 = Class.forName("Teacher");
//所有可见的构造方法
Constructor[] con = c1.getConstructors();
//所有的构造方法
Constructor[] con1 = c1.getDeclaredConstructors();
//获得指定参数的可见的构造方法
Constructor<Student> con2 = c1.getConstructor(String.class);
//获得指定参数的所有构造方法
Constructor<Teacher> con3= c1.getDeclaredConstructor(String.class);
//使用构造方法创建老师对象
Teacher tea1 = con3.newInstance("张三");
//通过class对象获得所有可见的属性
Field[] fs = c.getFields();
//获得所有的属性,不管可见还是不可见
Field[] fs1 = c.getDeclaredFields();
//获得指定名称的可见的属性
Field f = c.getField("num");
//获得指定名称的属性,不管可不可见
Field f1 = c.getDeclaredField("name");
//设置不可见的属性可以操作
f1.setAccessible(true);
//通过class对象创建类的对象
Object obj = c.newInstance();
f1.set(obj, "王二小");
//获得所有的可见方法
Method[] ms = c.getMethods();
//获得所有的方法,不管可见不可见
Method[] ms1 = c.getDeclaredMethods();
//获得可见方法中指定名称的方法
Method m = c.getMethod("study", String.class);
[size=medium][/size]m.invoke(obj, "java");
数组对象
char[] arr = new char[20];
Class c = arr.getClass();
System.out.println(c.getName());
//通过反射创建10位int数组
int[] ab = (int[])Array.newInstance(int.class, 10);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics