本篇文章为大家展示了java中反射机制的作用有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
java的特点有哪些
java的特点有哪些 1. java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 2. java具有简单性,面向对象,分布式、安全性,平台独立与可移植性,动态性等特点。 3 .使用Java可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序等。
什么是反射?
要想知道反射到底是什么,首先需要知道Java的类加载和对象创建的机制。
当我们写完一个Java文件的时候,后缀是. Java。在我们利用IDE执行Java文件的时候,其实IDE也帮我们运行了javac,即Java编译器。编译器会将. Java文件编译成. Class文件. Java虚拟机会去读取. Class文件。这时候,类加载器类加载器会将这些类,以及该Java文件导入的类加载到JVM中的方法区。这些被加载的类的类型都是类,习惯称之为类对象。
对象的创建,即是根据这些类类对象,在堆区创建对象。
这时候,反射就很好理解了。反射的目的就是获取这些类类对象
反射的方式
目前我知道可以利用反射返回类对象的方式有四种:
1。如果你知道类的路径:
Class aclass =, forname(“类的路径“),,//如java.util.ArrayList,你就可以获得ArrayList的类对象以前>2。如果你知道类:
Class aclass =, ArrayList.class;3。如果你实例化对象:
ArrayList, array =, new ArrayList (); Class aclass =, array.getClass (); 4。通过类加载器加载(一个人不经常用忘记了终极战士)
类对象类的用法
获得类类对象,我们可以非常轻松的获取到该类的字段和方法,我们甚至可以得到该类的父类:如:getMethod getConstructor…就是获取类对象的方法,构造器等等,这些可以去网上查到相应的资料,这里不做赘述。
我们得到了类类对象,我们就可以利用类类对象创建一个对象实例了!这里就是工厂模式的利用方法,将所有类创建的工作交给工厂类实现,并将创建的对象返回即可。这样就能方便管理对象创建的工作,利用反射,创建对象的例子:
//利用反射机制创建一个ArrayList的对象 Class aclass =, forname (“java.util.ArrayList");,//依靠反射,获取ArrayList的类对象 ArrayList什么是动态加载?
之前我也不知道什么是静态加载,什么是动态加载,看了一个人的博客豁然开朗:点击连接
他说的很清楚了:java中的新的方法是静态加载,因为新的方法是在编译阶段就会检查,而不是在运行阶段。反射是可以在运行时创建对象,调用对象的方法,变量等。
该博客作者利用了两个例子进行诠释
静态加载:
//定义接口 interface OfficeAble { ,public void 开始(); }//主 {class 办公室 ,public static  void main (String [], args) { ,如果(args [0] .equals (“Word")) { Word 才能;w =, new 词(); w.start才能(); ,} ,如果(args [0] .equals (“Excel")) { Excel 才能;e =, new Excel (); e.start才能(); ,} ,}//字类 class Word  implements officeAble { ,public void  start () { ,System.out.println(时“Word ); 以前,}>这样会报错。静态加载会在编译阶段将类类对象加载进方法区,因为这里没有定义Excel类,编译器就会报错。
动态加载:
//接口和单词类同上,修改一下主要的方法 {class 办公室 ,public static  void main (String [], args) { ,尝试{ Class 才能;c =, forname (args [0]); OfficeAble 才能;oa =, (OfficeAble) c.newInstance (); oa.start才能(); ,} ,抓住(Exception e) { e.printStackTrace才能(); ,} , ,}上述内容就是java中反射机制的作用有哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
java中反射机制的作用有哪些