当前位置: 首页 > news >正文

菏泽做网站建设找哪家好公司起名打分最准的免费网站

菏泽做网站建设找哪家好,公司起名打分最准的免费网站,icp查询系统,六 网站建设方案.原文来自于#xff1a;http://www.importnew.com/9078.html 什么是反射#xff1f;反射有什么用处#xff1f; 1. 什么是反射#xff1f; “反射#xff08;Reflection#xff09;能够让运行于JVM中的程序检测和修改运行时的行为。”这个概念常常会和内省#xff08;Int…原文来自于http://www.importnew.com/9078.html 什么是反射反射有什么用处 1. 什么是反射 “反射Reflection能够让运行于JVM中的程序检测和修改运行时的行为。”这个概念常常会和内省Introspection混淆以下是这两个术语在Wikipedia中的解释 内省用于在运行时检测某个对象的类型和其包含的属性反射用于在运行时检测和修改某个对象的结构及其行为。从它们的定义可以看出内省是反射的一个子集。有些语言支持内省但并不支持反射如C。 内省示例instanceof 运算符用于检测某个对象是否属于特定的类。 1 2 3 4 if (obj instanceof Dog) {     Dog d (Dog) obj;     d.bark(); } 反射示例Class.forName()方法可以通过类或接口的名称一个字符串或完全限定名来获取对应的Class对象。forName方法会触发类的初始化。 1 2 3 4 5 // 使用反射 Class? c Class.forName(classpath.and.classname); Object dog c.newInstance(); Method m c.getDeclaredMethod(bark, new Class?[0]); m.invoke(dog); 在Java中反射更接近于内省因为你无法改变一个对象的结构。虽然一些API可以用来修改方法和属性的可见性但并不能修改结构。 2. 我们为何需要反射 反射能够让我们 在运行时检测对象的类型动态构造某个类的对象检测类的属性和方法任意调用对象的方法修改构造函数、方法、属性的可见性以及其他。反射是框架中常用的方法。 例如JUnit通过反射来遍历包含 Test 注解的方法并在运行单元测试时调用它们。这个连接中包含了一些JUnit的使用案例 对于Web框架开发人员在配置文件中定义他们对各种接口和类的实现。通过反射机制框架能够快速地动态初始化所需要的类。 例如Spring框架使用如下的配置文件 1 2 3 bean idsomeID classcom.programcreek.Foo     property namesomeField valuesomeValue / /bean 当Spring容器处理bean元素时会使用Class.forName(com.programcreek.Foo)来初始化这个类并再次使用反射获取property元素对应的setter方法为对象的属性赋值。 Servlet也会使用相同的机制 1 2 3 4 servlet     servlet-namesomeServlet/servlet-name     servlet-classcom.programcreek.WhyReflectionServlet/servlet-class servlet 3. 如何使用反射 让我们通过几个典型的案例来学习如何使用反射。 示例1获取对象的类型名称。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package myreflection; import java.lang.reflect.Method; public class ReflectionHelloWorld {     public static void main(String[] args){         Foo f new Foo();         System.out.println(f.getClass().getName());             } } class Foo {     public void print() {         System.out.println(abc);     } } 输出 1 myreflection.Foo 示例2调用未知对象的方法。 在下列代码中设想对象的类型是未知的。通过反射我们可以判断它是否包含print方法并调用它。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package myreflection; import java.lang.reflect.Method; public class ReflectionHelloWorld {     public static void main(String[] args){         Foo f new Foo();         Method method;         try {             method f.getClass().getMethod(print, new Class?[0]);             method.invoke(f);         } catch (Exception e) {             e.printStackTrace();         }               } } class Foo {     public void print() {         System.out.println(abc);     } } 输出 1 abc 示例3创建对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package myreflection; public class ReflectionHelloWorld {     public static void main(String[] args){         // 创建Class实例         Class? c null;         try{             cClass.forName(myreflection.Foo);         }catch(Exception e){             e.printStackTrace();         }         // 创建Foo实例         Foo f null;         try {             f (Foo) c.newInstance();         } catch (Exception e) {             e.printStackTrace();         }           f.print();     } } class Foo {     public void print() {         System.out.println(abc);     } } 示例4获取构造函数并创建对象。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 package myreflection; import java.lang.reflect.Constructor; public class ReflectionHelloWorld {     public static void main(String[] args){         // 创建Class实例         Class? c null;         try{             cClass.forName(myreflection.Foo);         }catch(Exception e){             e.printStackTrace();         }         // 创建Foo实例         Foo f1 null;         Foo f2 null;         // 获取所有的构造函数         Constructor? cons[] c.getConstructors();         try {             f1 (Foo) cons[0].newInstance();             f2 (Foo) cons[1].newInstance(abc);         } catch (Exception e) {             e.printStackTrace();         }           f1.print();         f2.print();     } } class Foo {     String s;     public Foo(){}     public Foo(String s){         this.ss;     }     public void print() {         System.out.println(s);     } } 输出 1 2 null abc 此外你可以通过Class实例来获取该类实现的接口、父类、声明的属性等。 示例5通过反射来修改数组的大小。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package myreflection; import java.lang.reflect.Array; public class ReflectionHelloWorld {     public static void main(String[] args) {         int[] intArray { 1, 2, 3, 4, 5 };         int[] newIntArray (int[]) changeArraySize(intArray, 10);         print(newIntArray);         String[] atr { a, b, c, d, e };         String[] str1 (String[]) changeArraySize(atr, 10);         print(str1);     }     // 修改数组的大小     public static Object changeArraySize(Object obj, int len) {         Class? arr obj.getClass().getComponentType();         Object newArray Array.newInstance(arr, len);         // 复制数组         int co Array.getLength(obj);         System.arraycopy(obj, 0, newArray, 0, co);         return newArray;     }     // 打印     public static void print(Object obj) {         Class? c obj.getClass();         if (!c.isArray()) {             return;         }         System.out.println(\nArray length: Array.getLength(obj));         for (int i 0; i Array.getLength(obj); i) {             System.out.print(Array.get(obj, i) );         }     } } 输出 1 2 3 4 Array length: 10 1 2 3 4 5 0 0 0 0 0 Array length: 10 a b c d e null null null null null 总结 上述示例代码仅仅展现了Java反射机制很小一部分的功能。如果你觉得意犹未尽可以前去阅读官方文档。 参考资料 http://en.wikipedia.org/wiki/Reflection_(computer_programming)http://docs.oracle.com/javase/tutorial/reflect/原文链接 Programcreek 翻译 ImportNew.com - 薄荷脑译文链接 http://www.importnew.com/9078.html转载于:https://www.cnblogs.com/guoyongrong/p/3535509.html
http://www.yutouwan.com/news/344573/

相关文章:

  • 重庆工程建设招标网官方网站学校网络建设方案设计
  • 建设通网站有建筑公司名录大全天津市建设工程监理公司网站
  • 广州网站开发十度网络最好在线作图网
  • 婚纱摄影网站模板免费下载环球旅行社网站建设规划书
  • 淘宝网站开发店铺什么类别网站设计师图片
  • 大屏网站做响应自己做网站卖什么名字
  • 免费招聘网站有哪些芜湖网站建设怎么做
  • 婚纱网站策划书模板一个网站可以做多少个小程序
  • 网站搭建官网免费seo推广软件
  • 新网站如何快速收录wordpress图片特效插件下载
  • 福建公司网站开发龙岩关键词优化排名
  • 广州外贸网站建设 open找室内设计师上哪个网站
  • 英语培训学校网站建设多少钱网站建设 腾
  • 怎样增加网站反向链接现在做网站到底需要多少钱
  • 网站建设h5怎样做app推广
  • 做问卷比较好的网站删除wordpress首页链接
  • 国外免费网站域名服务器查询简述获得友情链接的途径
  • 网站策划书模板大全制作网页需要的技术
  • 网站开发 项目内容意大利新闻
  • 黄骅做网站的电话建设银行境外购物网站
  • 徐州市政建设集团公司网站wordpress页面是什么
  • 网站开发的论文引言wordpress js加载速度慢
  • 江苏大汉建设实业集团网站百度搜到自己的网站
  • 做网站的类型wordpress 登录可见
  • 网站建站安全需求介绍兰州的网页
  • 免费综合网站注册申请wordpress 文章描述
  • 做网站哪种编程语言好南浔区城乡建设局网站
  • 女的有没有做网站的制作图片用什么软件好
  • 开封市建设局网站政务门户网站建设思想
  • 爱站seo工具包下载天蝎网站建设公司