java reflect 学习
来源:互联网 发布:淘宝客服有底薪吗 编辑:程序博客网 时间:2024/06/07 02:46
1.如何实现从一个类名(如”java.util.ArrayList”)到类(ArrayList.class)再到实例化(Object,相当于new ArrayList())的过程转化?这个过程中需要处理哪些异常?
public class Demo1{ private int i = 1; public static void main(String[] args){ try{ Class class1 = Class.forName(“reflect.Demo1”); Demo1 demo1 = (Demo1)class1.newInstance(); System.out.println(demo1.i); }catch(ClassNotFoundException e) { e.printStackTrance(); }catch(InstatiationException e1) { e.printStackTrance(); }catch(IllegaAccessException e2) { e.printStackTrance(); } }}
2.请说明如何获得一个对象的类名、包名?
public class Demo1{ public static void main(String[] args) { String packageName = Demo1.class.getPackage().getName(); String objName = Demo1.class.getName(); String objSimpleName = Demo1.class.getSimpleName(); }}
3.请说明如何获得一个类(Class)的所有域(Field),包括其父类的域。
package reflect;import java.lang.reflect.Field;public class Father { private String fname = "father"; private int fage = 40; public static void main(String[] args) { try { Class<Son> class1 = (Class<Son>) Class.forName("reflect.Son"); Son son = class1.newInstance(); Field[] fields = son.getClass().getDeclaredFields(); //getFields() 只能获得非private 以外的成员变量(czz注:不过实际运行时是可以获得private成员变量的) for (Field field : fields) { System.out.println(field.getName()); } Field[] fields1 = son.getClass().getSuperclass().getDeclaredFields(); for (Field field : fields1) { System.out.println(field.getName()); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String getFname() { return fname; } public void setFname(String fname) { this.fname = fname; } public int getFage() { return fage; } public void setFage(int fage) { this.fage = fage; }}class Son extends Father{ private String sname = "son"; private int sage = 20; public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public int getSage() { return sage; } public void setSage(int sage) { this.sage = sage; }}
4.请说明如何获得一个类(Class)的方法,以及如何调用这些方法?
package reflect;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class Demo3 { public void show() { System.out.println("show method"); } public void show(int i) { System.out.println("show method with param :" + i); } public int showReturn() { return 1; } public static void main(String[] args) { try { Class class1 = Class.forName("reflect.Demo3"); Demo3 demo3 = (Demo3) class1.newInstance(); Method method1 = demo3.getClass().getDeclaredMethod("show"); Method method2 = demo3.getClass().getDeclaredMethod("show", int.class); Method method3 = demo3.getClass().getDeclaredMethod("showReturn"); method1.invoke(demo3); method2.invoke(demo3, 2); Integer i = (Integer)method3.invoke(demo3); System.out.println(i); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
- java reflect 学习
- java.lang.reflect学习
- java.lang.reflect反射学习
- 第一次感受DI & java.lang.reflect.* 学习
- Java 反射(reflect)学习笔记
- Java学习笔记-反射(reflect)
- reflect学习
- java reflect
- java reflect
- java reflect
- Java Reflect
- java .reflect
- Java reflect
- java-reflect
- Reflect-Java
- JAVA Reflect
- Java Reflect
- JAVA reflect
- Java常用方法大全
- perl基础-9 (Perl编程24学时教程)
- C# windows服务的创建与调试
- mysql 列出符合记录里面某个条件达到多少个数量的用户
- 我的笑,隐藏了多少悲伤:伤感心情日志
- java reflect 学习
- Activity的生命周期
- 揭开Google数据中心五大神话
- CMWAB和CMNET区别
- (最新版本)redmine的安装与配置之二 数据迁移
- Eclipse maven工程 Missing artifact com.sun:tools:jar:1.5.0:system 解决方法
- js实现简单漂亮的日历
- 在证书存储区中找不到清单签名证书
- TCPDUMP数据抓包