欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

黑马程序员_高新技术笔记,黑马程序员高新技术

来源: javaer 分享于  点击 4495 次 点评:260

黑马程序员_高新技术笔记,黑马程序员高新技术


------------ android培训java培训、java博客、java学习型技术博客、期待与您交流! -------------


反射是通过一个类的相关信息诸如类名,实例对象,等来获取类中的方法和元素的一种方法。

要想使用反射 就要先获取到Class对象 获取Class对象有三种方式

第一种:类名.class

第二种:具体对象.getClass();

第三种:Class.forName("类所在的包+类名");

第一种方式的具体实现(类名.class):

         比如要获取String的Class对象 就写成String.class;

[java] view plaincopy
  1. Class cls=String.class;  

第二种方式的具体实现(具体对象.getClass()

        获取String的Class对象

[java] view plaincopy
  1. String str="abc";  
  2. Class cls=str.getClass();  

第三种方式的具体实现(Class.forName("类所在的包+类名")
       获取String的Class对象

[java] view plaincopy
  1. Class cls=Class.forName("java.lang.String");  
[java] view plaincopy
  1. 以上三种方式 第三种最为常见。  

获取到Class对象以后就可以对Class对象所属的类进行各种操作

通过Class对象可以获取到以下类型的对象

Field                   表示对象中定义的变量

Method              表示对象中的一般方法

Contructor        表示对象中的构造方法

因为每个变量或者方法都有private public 或默认的修饰符修饰 单纯用的获取方式只能得到被public所修饰的元素

所以一般都会用带有Declared的方法

获取对象中的元素一般都有两种方式 一种是获取单个 另一种是获取全部

关于Field

           获取全部Field(Field[] fld=cls.getDeclaredFilds();)

          获取单个Field(Field fld=cls.geDeclaredFild("变量名");)

关于Contructor

          获取全部Contructor(Contructor[] con=cls.getDeclaredContructors();)

           获取单个Contructor(Contructor con=cls.getDeclaredContructor(参数类型.class...);)

关于Method

         获取全部Method(Method[] mtd=cls.getDeclaredMethods();)

         获取单个Method(Method mtd=cls.getDeclaredMethod("方法名",参数类型.class))

获取到某个类的Class对象 并用这个Class对象获取到这个类中的各个元素以后 就可以对元素进行操作

Filed 主要有get方法和set方法

Contructor 可以用newInstance方法 利用获取到的构造函数来创建一个新的实例对象

Method invoke 可以直接调用这个类中定义的方法

以上的各种操作 只有当元素为public时 才可以进行 如果元素的访问状态为默认 或者为private时 需要使用setAccessible(boolean)改变元素的访问状态 才可以进行

类加载器:

java默认提供了3个类加载器 BootStrap ExtClassLoader AppClassLoader

类加载器本身也是一个java类 因为是类 所以本身也会被类加载器加载

加载默认3个类加载器的类是BootStrap 这个类加载器并不是一个java类

BootStrap 加载器加载JRE/lib/rt.jar

Ext加载器加载JRE/lib/ext/*.jar

AppClassLoader 加载classpath指定目录中的jar文件

获取类加载器的方法 字节码.getClassLoader();


------------ android培训、java培训、java博客、java学习型技术博客、期待与您交流! -------------

详情请查看:http://edu.csdn.net/heima/

相关文章

    暂无相关文章
相关栏目:

用户点评