`
snake_hand
  • 浏览: 568291 次
社区版块
存档分类
最新评论

java反射机制初体验1

 
阅读更多

反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

 

反射的基石:Class

Java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class。注意:与小写class的区别,它是定义类时使用的关键字。

Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。

Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。、

如何得到各个字节码对应的实例对象(Class类型)三种

创建顺序:字节码在硬盘中——>加载到内存中——>创建对象。

形式:Class class=字节码;

1、Class class1=Date.class;     //固定写法

2、Class class2=new Date().getClass();  //有了字节码创建的对象

3、Class class3=Class.forName(“java.uti.Date”);   //静态方法。(这是主要方式:因为写源程序时还不知道类的名字,写源程序时可以用一个字符串变量,然后从配置文件按中读取)

forName得到类的字节码有两种情况:

  1)、字节码已加载到内存中,无需加载,找到字节码返回。

  2)、虚拟机还没有字节码,用类加载器,将字节码缓存起来(以后无需再加载),使用forName方法获取。

 

 代码示例

View Code
 1 package reflect;
 2 
 3 public class ReflectTest {
 4 
 5     /**
 6      * @author alan
 7      * @param args
 8      * @throws Exception 
 9      */
10     public static void main(String[] args) throws Exception {
11         /*
12          * String的字节码在虚拟机是同一份。
13          * class1、class2、class3是此字节码的三个事例,所以三者相等。
14          */
15         String string="string";
16         Class class1=string.getClass();
17         Class class2=String.class;
18         Class class3=Class.forName("java.lang.String");
19         System.out.println(class1==class2);
20         System.out.println(class1==class3);
21         
22         /*
23          * 有九种预定义的 Class 对象,表示八个基本类型和 void。
24          * 这些类对象由 Java 虚拟机创建,与其表示的基本类型同名,
25          * 即 boolean、byte、char、short、int、long、float 和 double。
26          * 只要在源程序中出现的类型,都有各自的Class实例对象。如:int[]、void...
27          */
28         System.out.println(String.class.isPrimitive());        //String不是基本类型的字节码。
29         System.out.println(int.class.isPrimitive());
30         System.out.println(int.class==Integer.class);        //int与Integer有不同的字节码。
31         System.out.println(int.class==Integer.TYPE);        //Integer.TYPE表示Integer所包装的基本类型的字节码。
32         System.out.println(int[].class.isPrimitive());        ///数组类型不是原始类型。
33         System.out.println(int[].class.isArray());                //判定此 Class 对象是否表示一个数组类。
34     }
35 
36 }

 

 

分享到:
评论

相关推荐

    java反射机制.zip

    java反射机制java反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制.zipjava反射机制...

    Java反射机制 Java反射机制

    Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制Java反射机制

    JAVA 反射机制应用

    JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用JAVA 反射机制应用

    java反射机制原理和反射机制总结

    java反射机制原理和反射机制总结!!! java反射机制原理和反射机制总结!!!

    反射实例-JAVA反射机制.doc

    反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...

    java反射机制源码

    java反射机制源码java反射机制源码java反射机制源码

    Java反射机制课件ppt

    Java反射机制Java反射机制Java反射机制Java反射机制

    JAVA反射机制应用

    描述JAVA反射机制应用、举例。描述反射机制的具体实现及方法实现。

    Java 反射机制 代码的实例

    Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了

    java反射机制和动态代理的原理

    java反射机制和动态代理的原理,熟悉反射机制和动态代理

    java 反射机制

    java 反射机制深入理解,java 反射机制深入理解,java 反射机制深入理解,

    Java反射机制的实现_Reflection

    Java反射机制的实现_Reflection,适合学习了解反射机制。

    Java反射机制经典案例

    Java 反射机制、Java 的类反射机制、Java 反射机制的学习、Java 反射Reflection--运行时生成实例 java反射机制的手册文档

    Java反射机制总结

    这是一本关于Java反射机制论文集合的书。其中包含基本的理论及各种实例。 所有文章均从网络途径获得,本人只作收集整理的工作,个别地方有改动。每篇文章的标题遵循原作者的表述,本人不再作任何更改。 关键字有:...

    候捷谈Java反射机制

    候捷谈Java反射机制 有助深入理解Java新特性

    Java中的反射机制

    Java中的反射机制Java中的反射机制Java中的反射机制

    Java反射机制总结(实例分析)

    Java反射机制总结(实例分析) Java反射机制学习笔记

    一个例子让你了解Java反射机制

    一个例子8个demo让你了解Java反射机制

    java反射机制应用

    java反射机制应用,文档中列举了使用java反射机制的各个应用场景,加以代码实例,使用学习非常方便。

    java反射机制.md

    深入了解java反射机制的原理,通过反射机制可以破坏单例模式,如何防止通过反射机制拿到单例模式的构造器呢?用枚举类可破

Global site tag (gtag.js) - Google Analytics