java 反射_浅谈Java动态反射

a21f58bcb2eefdc156ebd0a1822d94eb.png

反射是框架设计的灵魂,而反射是基于动态实现的

动态:

动态相对于静态而言的。c和c++是静态的,javascript和python是动态的,而java有一定的动态性

动态语言是值 程序在运行是能够改变程序结构和变量类型的语言,使得语言的功能更加强大

动态的为什么更强大呢?举一个例子

// 静态
// 动态

现在假如没有Student这个类,第一段代码不能通过编译,但是第二段代码能通过编译,会抛出ClassNotFoundException的异常

这与java 的类加载机制有关了。我们编写的.java文件首先被编译器编译成一个字节码文件(即.class文件),当需要某个类的时候,java虚拟机会加载 .class 文件,并创建对应的class对象,将class文件加载到虚拟机的内存

但从效率来说,静态执行的效率肯定远高于动态

反射:

在java里提供了一个叫做java.lang.reflect的库,简单来说,通过它,可以获取 类名 类的属性,方法 ,构造器并进行操作

可获取包括该class的modifiers(诸如public, static等等)、superclass(例如Object)、实现的interfaces,也包括field(属性)和methods(方法)以及Constructor(构造器),并可以改变属性的值,调用方法和构造器

Java反射机制主要提供了以下功能

在运行时构造任意一个类的对象

在运行时获取任意一个类所具有的成员变量和方法

在运行时调用任意一个对象的方法(属性)

搞不懂没关系,举个例子

假如有一个Student类

public 
// 载入类对象

下面是对方法和属性进行操作

//通过反射API执行方法             

java动态反射的应用是ORM框架(目前知道),它是连接对象和数据库层次的桥梁,实现了关系对象到数据库的映射

作为菜鸡,关于反射的基本内容介绍差不多就这么多了,虽然知识一点皮毛,但说明的入门很轻松。要学得更深还要通过实战。希望各位也能继续加油。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值