标签:
java反射机制
一、
1、了解反射的作用
2、掌握Class类的操作及使用
3、可以通过反射取得一个类的实例化对象
4、可以通过反射取得类的结构,可以通过反射进行属性方法的调用
二、认识反射
Java反射机制就好像是一面镜子,照镜子可以发现自己的所有的特征,一个类可以通过反射(照镜子)发现自己的所有的方法。
反射机制在框架上面运用的尤其多!(怎么应用的?)
比如,javascript就是动态语言,有如下代码:
Var a=1;
a=”weiwei”;
a=false;
由这三行代码可知:a可以在运行时动态的改变,由int类型改为字符串类型,又由字符串类型变为boolean类型,即在程序运行时,允许改变程序结构或变量类型,这就是动态语言。而java、C++等式不允许这样的如果a是int类型,就不能随便改动了。所以说java是静态语言。
解释:Class.forName("org.lxh.demo.classdemo02.Person")。//程序在编译的时候并不知道org.lxh.demo.classdemo02.Person是一个person类,只知道它是一个字符窜,只有在程序运行的时候才知道是个person类,即我们可以与运行时加载、探知、使用编译期间完全未知的classes。
如下所以:运用getDeclaredMethods()方法,可以知道一个已知名称的类中有哪些方法的申明,包括私有方法。
正常情况下,一个类要想使用,则必须找到此类,然后通过此类实例化一个对象,必须先有类再有对象,那么现在如果想通过一个对象找到其所在的类呢?
三、认识Class类
在反射机制中,Class类是一个操作的源头,所有的反射操作从此类展开,但是如果想实例化此类的对象,可以通过三种方式;
1、 Object类的getClass()方法
2、 通过类Class的形式,如:Person.class(第二常用)
3、 Class.forName()(最常用)
四、通过Class类实例化对象
在Class类的使用中,实例化对象是最常用的一种操作,而且日后所有框架的各个程序的实现原理都是依靠Class类完成的。
1、 实例化无参构造的类
如果一个类中存在无参的构造方法,那么就可以直接通过Class类进行实例化操作。
现有如下代码:
步骤:1、获取class对象
2、生产类的实例
package org.lxh.demo.classdemo02; public class Person { public String toString() { return "hello world!!!"; } } public class InstanceDemo01 { public static void main(String[] args) { Class<?> c = null; try { c = Class.forName("org.lxh.demo.classdemo02.Person");//先实例化对象 } catch (ClassNotFoundException e) { e.printStackTrace(); } try { Person p = (Person) c.newInstance();//创建对象 System.out.println(p); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } }
标签:
原文地址:http://my.oschina.net/weiweiblog/blog/485433