1 / 12
文档名称:

java中的反射总结.doc

格式:doc   大小:298KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

java中的反射总结.doc

上传人:63229029 2017/4/13 文件大小:298 KB

下载得到文件列表

java中的反射总结.doc

相关文档

文档介绍

文档介绍:Class 类如果要完成反射,那么必须了解 Class 类实例 1 :通过对象取得包名和类名 123456789 10 11 12 13 .siu; class Test {} public class Demo { public static void main(String[] args) { Test t= new Test(); (()); (().getName()); }} 编译结果如下,注意包的编译方式即可此处的 getClass() 方法是默认继承自 Object 类的在 java 中, Object 类是所有类的父类,同样,所有类的实例化对象也都是 Class 类的实例因此,这样一来就会牵扯到向上转型和向下转型的概念由于向下转型的不安全因素,在这里泛型也会接踵而来(不过我想说的是,此处的泛型设计很刺眼!尼玛,整个 java 的语法设计同样刺眼,超恶心!!!) 实例 2: Class 类的实例化由于 Class 类没有构造方法,所以实例化 Class 类的方式有点特殊,有三种方式: ( ) forName( )123456 class Test {} public class Demo { public static void main(String[] 789 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 args) { // 方式一: Test t= new Test(); Class<? extends Test> c1= (); (c1); // 方式二: // 为了避免特殊性,这里不用 Test 类,而用 java 库中的 String 类 Class<String> c2= ; (c2); // 方式三: //forName() 方法会抛出异常 Class<?> c3= null; try { c3= ("Test"); } catch (ClassNotFoundException e){ (); } (c3); }} 其中, forName( ) 方法需要重点掌握,因为它可以在类不确定的情况下实例化 Class ,更具灵活性 Class 类的应用 Class 类中有一个方法叫做 newInstance( ), 它可以用来创建一个 Class 类对象的新实例怎么说呢? Class 对象包含的内容就是反射好的那个类,我们要构造那个类的新实例(新对象) 实例 3: Class 类的无参构造对象 12 public class Demo { public static void main(String[] 3456789 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 args) { // 实例化 Class 对象, forName() 方法会抛异常 Class<?> c= null; try { // 这里需要完整的包名和类名 c= (""); } catch (ClassNotFoundException e){ (); } // 生成一个字符串的引用 String s= null; try { // 将构造好的对象向下转型为 String 类//newInstance() 方法会抛异常 s= (String) (); } catch (InstantiationException e) { (); } catch (essException e){ (); } (" 字符串长度: "+ ()); }} 这样就通过无参数的形式构造了一个新的对象,如同正常模式中通过无参构造方法来构造新对象一样我们知道,类中除了有无参构造方法,还会存在有参数的构造方法那在反射中如何通过有参数的形式构造对象呢?接着看实例 4: Class 类的有参构造对象 123456789 10 11 12 13 14 15 16 17 18 19 20 import ; publi