java 反射 镜子,java反射机制 - 巍巍的个人页面 - OSCHINA - 中文开源技术交流社区...

java反射机制

一、

1、了解反射的作用

2、掌握Class类的操作及使用

3、可以通过反射取得一个类的实例化对象

4、可以通过反射取得类的结构,可以通过反射进行属性方法的调用

二、认识反射

Java反射机制就好像是一面镜子,照镜子可以发现自己的所有的特征,一个类可以通过反射(照镜子)发现自己的所有的方法。

反射机制在框架上面运用的尤其多!(怎么应用的?)

d573e1220d037068c784717c540eb468.png

比如,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。

e634fe12a04662a0984589b6dd8f3a1a.png

如下所以:运用getDeclaredMethods()方法,可以知道一个已知名称的类中有哪些方法的申明,包括私有方法。

c2a34eae9c6032fb21298139a43dc69c.png

正常情况下,一个类要想使用,则必须找到此类,然后通过此类实例化一个对象,必须先有类再有对象,那么现在如果想通过一个对象找到其所在的类呢?

三、认识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();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值