栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java注解与反射系列——反射概述day1-2

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java注解与反射系列——反射概述day1-2

Java注解与反射系列——反射概述
  • 前言
    • 静态语言
    • 动态语言
  • 反射
    • 概述
    • 反射流程
    • 反射机制提供的功能
    • 反射的优点与缺点
      • 优点
      • 缺点
      • 反射主要的API
    • 获取反射对象
      • 代码示例
      • 结果截图

前言

反射最重要的用途:与注解进行配合,实现
所以学注解必要反射

静态语言

运行时结构不可变的语言就是静态语言。如Java、C++等
虽然Java不是动态语言,但Java可以称之为“准动态语言”。
Java有一定的动态性,我们可以利用反射机制获得类似动态语言的特性

Java的动态性让编程的时候更加灵活!

动态语言

指的是运行的时候开源改变其自身结构的语言,如C#,JavaScript,PHP等
例如可以引入新的函数,对象,新的代码

特点:没有强制的数据结构,javaScript 中的 var ,python的无需指明变量类型

即允许在运行时,代码可以根据某些条件改变自身结构!

反射 概述

Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。

例如:

Class classdemo1 = Class.forName("java.lang.String") 

加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射

反射流程

反射机制提供的功能
  1. 在运行时判断任意一个对象所属的类
  2. 在运行时构造任意一个类的对象
  3. 在运行时判断任意一个类所具有的成员变量和方法
  4. 在运行时获取泛型信息
  5. 在运行时调用任意一个对象的成员变量和方法
  6. 在运行时处理注解
  7. 生成动态代理(AOP)
反射的优点与缺点 优点

动态创建对象和编译,提高程序灵活性

缺点

影响性能

反射主要的API
  1. java.lang.Class:代表一个类(其实在Object中)
  2. java.lang.reflect.Method:代表类的方法
  3. java.lang.reflect.Field:代表类的成员变量
  4. java.lang.reflect.Constructor:代表类的构造器

获取反射对象

一个类在内存中只有一个class对象,所以你怎么获取都是相同的
类被加载后,类的整个结构都会被封装在Class对象中

代码示例
package example.reflect;



public class demo1 {
    public static void main(String[] args) throws ClassNotFoundException {
        //一个类只有一个class对象
        Class stu = Class.forName("example.reflect.entity.Stu");
        System.out.println(stu);
        
    }
}

结果截图

该方法返回类型为Class类,是Java反射的源头!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/939485.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号