java反射入_Java反射-初步入门

标签:

Java反射-初步入门

学反射先了解什么是反射。

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

上面提到了类和对象,先了解什么是类和对象。

java中类:

1.抽象描述

类:类是客观存在的、抽象的、概念东西。

对象:对象是具体的,指一个具体的东西。

打比方:饮料是一个类,可乐、雪碧就是对象。

总结一句话:类是对象的模版,对象是类的具体实现。

2.具体描述

Java中创建一个类:

//User是创建的类,User自己写的类名

public class User{

Java中对象:

1.对象声明

User user;          //User是上面的类,user是自己写的对象名

2.对象创建

User user=new User();  //User是类,user是起的对象名 这是创建对象。

Class(大写的C)类:用于描述一切类、接口。枚举是一种类,注解是一种接口。

Class实例:就是指JVM中的一份字节码。

想用反射就需要得到一份字节码。(一个类在JVM中只有一份字节码)

得到Class实例的三种方式:

类名.class()

Class.forName(里面写的是类的字符串(包名+类名))

通过对象获得Class实例:对象名.getClass()

第一种方式:

Class clazz1=User.class();

第二种方法:

Class clazz2=Class.forName("com.chengxuyuanzhilu.User");

第三种方法:

User user=new User();

Class clazz3=user.getClass();

clazz1==clazz2==clazz3因为表示的都是JVM中的一份字节码(User.class)

在八大包装类型中都有一个常量TYPE,TYPE表示该包装类对应的基本类型的Class实例。如:

Integer.TYPE==int.class;

java 反射API

知道怎么得到Class实例接下来就很简单了

使用jdk API可看到Class中的方法,就可以用反射调用了。当然我们也可以尝试引入java源码,直接读源码

获得类中的构造器

API中的关于构造器的方法(四个方法)

公共的构造器

20180110184231965599.png

Declared所有的构造器和访问权限无关

20180110184231967552.png

新建一个TestClass类,其中有三个构造方法 一个私有的

20180110184231968529.png

通过反射获取这两个构造方法(除私有的构造方法),控制台输出

20180110184231969505.png

如何得到私有的构造方法呢

20180110184231971458.png

调用构造方法创建对象

上面知道如何得到构造方法了,接下来就可以用构造方法中的方法创建对象了。

Jdk api搜索Constructor就可以看到其中的方法了,我们要使用的就是通过构造方法得到对象。

20180110184231973411.png象。

API中的关于Method的方法(四个方法)

getMethods获取包括自身和继承过来的所有public方法

20180110184231974388.png

获取自身所有的方法(不包括继承的,和访问权限无关)

20180110184231976341.png

得到方法

TestClass中的方法

20180110184231977317.png

通过反射得到方法

20180110184231978294.png

然后api 搜索Method 通过反射使用里面的方法了

invoke(Object obj, Object... args)            对带有指定参数的指定对象调用由此Method 对象表示的底层方法。

20180110184231980247.png

使用反射调用静态方法

调用静态方法method.invoke(null) 参数改为null

使用反射获取字段

Api class  里面有同样有四种获取字段的四种方法

20180110184231981223.png

获得字段 可以通过api 搜索Field 就可以使用其中的方法了

Field set get方法

20180110184231983176.png

看完后 是不是感觉反射很简单了

标签:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值