如何理解java 映射_如何使用和理解java的反射机制

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

那么我们再来说下反射机制实现需要用到的类,总共有四大类:Class,Constructor,Method,Field。

其实实现反射需要如下几个步骤:

1.获取Class类

2.通过Class创建对象

3.获取类中的方法

4.获取类中的属性,属性值或类型

首先来说一下获取Class的三种方法

public static voidmain(String[] args) {//第一种方式 通过对象获取Class

Student student = newStudent();

Class sc=student.getClass();

}

public static voidmain(String[] args) {//第二种方式 直接通过类名获取

Class sc2=Student.class;

}

//第三种方式 通过类的全称获取(使用forName方法)

Class sc3=Class.forName("com.java.Student"); //其实就是这个类所在的包的路径

接下来通过Instance方法实例化对象

//使用newInstance方法来创建实例对象。

Student s1=(Student)sc.newInstance(); //这里需要强转一下,因为创建出来的的对象是Object类型的

最后就是通过创建Field对象和Method对象来获取属性和方法(这里如果想要实现动态输入必须要使set方法的setAccessible方法为true)

Field f1=s1.getClass().getDeclaredField("name"); //获取方法中的name属性

Method getm1=s1.getClass().getDeclaredMethod("getName", new Class[]{}); //获取getname方法 这里的getName是可以修改成你想获取的方法

Method setm1=s1.getClass().getDeclaredMethod("setName", new Class[]{f1.getType()});//这里的fi.getType是为了获取setName输入时的类型

setm1.setAccessible(true); //设置setm1是可访问的

setm1.invoke(s1, "abc"); //通过setm1输入值

System.out.println(getm1.invoke(s1, null)); //通过getm1获取值

这段代码是可以获取到你所输入的值,如果只是想要获取属性或方法的名字只需要前两行!

上面介绍的是获取单一属性方法的办法,

也可以获取整个类的所有属性和方法如下代码所示:

Field []f = s1.getClass().getDeclaredFields();//获取方法中所有的属性

for(Field inputf :f){ //输出所有的属性

System.out.println(inputf);

}

Method[] allmethod= s1.getClass().getDeclaredMethods();//获取类中所有的方法

for(Method inputm : allmethod){ //输出所有的方法

System.out.println(inputm);

}

这就是使用反射机制的具体步骤。

最后总结如下:

我们通过整体代码可以知道,我们是可以通过用户的输入来调取某个类的某个方法或属性,或是获取某个类的所有方法或属性,这也就对应了解到了开头我们所说的反射的概念:动态获取信息以及动态调用对象方法的功能称为java语言的反射机制

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值