java spring 解析反射

使用java 的spring框架我们不再需要使用new对象,而是通过
来获取对象。
今天笔者了解了下java的反射,对spring的有了一个全新的认识。

先来说下反射的核心思想
将一个类的各个成员映射成相应的Java类型

在这里插入图片描述

例如图中的成员有 包 构造器 属性字段 普通方法 而反射即是把需要的转化成相应的java类型 。可以依靠反射来换取相应的成员,下面的例子通过反射来创建一个对象。

创建了一个很基础的类

public class father {
	public String fathername="fathername";
	public father() {
	}
	public father(String fathername) {
		this.fathername = fathername;
	}
	public void father() {
		System.out.print("father");
	}
}

1.正常的创建对象

public class main {
	public static void main(String[] args) {
		father father=new father();
        System.out.print(father.fathername);
	}
}

这种方法相信应该所有人都看的懂,就是依靠new来创建对象
测试,返回结果


fathername


2.通过反射来创建对象(不使用spring框架的bean)


public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
		Class getclass = Class.forName("全类名");//不能写class     //1
		Constructor constructor=getclass.getConstructor();      //2
		//Constructor constructor=getclass.getConstructor(String.class);
		father father=(father)constructor.newInstance();       //3
		father father=(father)constructor.newInstance("name");   
		System.out.print(fahter.fathername);     //4
	}

这里来详细的解释下
我们都知道,java依靠JVM解析java类文件是先将.java转化为.class ,而这里的.class就是字节码文件。(如果对字节码是什么不了解,请先百度一下)

1.代码中的第一行(标注1的地方)即是获取字节码文件。获取字节码文件的方法有很多种,可以自行百度下,这里使用Class.forName() (注意获取字节码的时的class和Class,不要掉坑里了)
2.代码种第二行(标注2的地方) 我们都知道java创建对象是依靠构造器的,这种依靠反射的创建对象也不例外,代码第二行即是获取构造器的字节码
,当然例子中的father有无参和有参的,无参即是.getConstructor();,有参即
.getConstructor(String.class);
3.代码第三行即是利用constructor最后的创建对象
4.测试,返回结果


fathername


与用new创建的对象返回结果一致

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值