java 反射代价_Java反射机制
# 反射
## 什么是反射
反射是Java提供的动态执行机制, 可以动态加载类, 动态创建对象, 动态访问属性, 动态调用方法..
静态执行: Java代码经过编译以后就确定的执行次序, 称为静态执行次序
Foo foo = new Foo();
foo.test();
动态执行: 在运行期间才确定创建那个类的对象, 执行那个方法!
Java 反射API可以实现动态执行!
案例: 执行某个类中全部的以test为开头的方法. (必须使用使用反射实现)
反射:
1. 反射是Java提供的API, 接受API的提供的功能!
2. 是Java底层的执行机制.
## 反射功能
### 动态加载类
Class cls = Class.forName(类名)
作用: 将类名对应的类加载到方法区, 如果类名错误则抛出异常.
### 动态创建对象
Object obj = cls.newInstance();
特点:
- 动态创建对象
- 可以创建任何对象
- cls对应的类必须有无参数构造器!!!
- 如果没有无参数构造器则抛出异常!
- 反射API利用Constructer API支持有参数构造器, 略...
### 反射可以查询类中的方法
可以返回类中声明的全部方法信息
Method[] methods = cls.getDeclaredMethods();
for(Method m:methods){
System.out.println(m);//输出方法信息
}
Declared 声明的
Method 方法
### 动态执行方法
执行方法:
1. 必须有对象
2. 找到对象对应的类型方法信息
- 方法信息在类上查找
案例:
Method m = cls.getDeclaredMethod(方法名);//在类信息上查找一个方法信息
//m 代表 cls类上的一个方法信息
Object obj=cls.newInstance();//动态创建对象
//动态调用(invoke)方法
Object val = m.invoke(obj);
完整代码:
1 public static void main(String[] args) throwsClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {2 Scanner in = newScanner(System.in);3 String className =in.nextLine();4 //动态加载类
5 Class> clas =Class.forName(className);6
7 //动态创建类对象
8 Object instance =clas.newInstance();9 System.out.println(instance);10
11 //动态检查类中的公共成员方法信息(包括超类和接口中的公共成员方法)
12 Method[] methods =clas.getMethods();13 for(Method method : methods) {14 System.out.println(method);15 }16
17 System.out.println("--------华丽分割线--------");18 //动态检查类中的所有方法信息(包括私有和保护的,不包括继承)
19 Method[] declaredMethods =clas.getDeclaredMethods();20 for(Method method : declaredMethods) {21 System.out.println(method);22 }23
24 String methodName =in.nextLine();25 Method m = clas.getDeclaredMethod(methodName, null);26 //动态执行方法
27 Object invoke = m.invoke(instance, null);//invoke是方法执行完毕后的返回值
28 System.out.println(invoke);29 }
### 反射用途
Eclipse 的快捷菜单使用了反射, 利用反射发现了类的属性和方法
Spring 利用了反射
动态加载类
动态创建Bean
动态注入属性, 包括私有属性注入
动态解析注解
3. MyBatis 利用了反射
- 查询时候, 动态了将查询结果利于反射注入到Bean返回
4. JUnit 使用了反射
5. 注解的解析使用了反射
6. Servlet调用使用了反射
java 反射代价_Java反射机制相关推荐
- java反射模式_Java反射机制详解
对于一般的开发者,很少需要直接使用Java反射机制来完成功能开发,但是反射是很多框架譬如 Spring, Mybatis 实现的核心,反射虽小,能量却很大. 本文主要介绍反射相关的概念以及API的使用 ...
- Java的反射作用_java反射机制的作用与优点
java的反射机制就是增加程序的灵活性,避免将程序写死到代码里, 例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码 ...
- java反射类型转换_Java反射探索研究(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankakay 摘要:本文详细深入讲解是Java中反射的机制,并介绍了如何通过反射来生成对象.调用函数.取得 ...
- java 反射练习_JAVA反射的基础学习
反射 :reflection 程序的一种内省机制 程序可以在运行期间动态的创建对象,获取对象类型,调用对象行为 内省机制在java和.net语言中有,在早期的C,C++,delphi,vb这些语言都没 ...
- java反射类型转换_java反射(转)
反射是框架设计的灵魂 (使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一.反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道 ...
- java映射理解_Java反射的理解
Java反射的理解 反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释. 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的.于是我们直接对这个类进行实例化,之后使用这个 ...
- java反射方法_java反射之方法反射的基本操作方法
本文接上文"java反射之获取类的信息方法(推荐)",利用反射(invoke)来获取一个类中的方法来执行. 1.定义一个类,包含三个名称相同,参数不同的方法 class A{ pu ...
- Java内省用法_java内省机制及PropertyUtils使用方法
反射 相对而言,反射比内省更容易理解一点.用一句比较白的话来概括,反射就是让你可以通过名称来得到对象(类,属性,方法)的技术.例如我们可以通过类 名来生成一个类的实例:知道了方法名,就可以调用这个方法 ...
- java 抛出异常效率_Java异常处理机制
与C++.python,Ruby一样,Java也有一个异常处理机制,当程序出现异常时,系统会自动生成一个Exception对象通知程序去处理.之所以这样设计目的在于使程序有更好的容错性和可读性,实现业 ...
最新文章
- python 空数组_从零开始学python之numpy
- 2015-2016 ACM-ICPC Southwestern Europe Regional Contest (SWERC 15)
- Android中图片优化之webp使用
- python-os创建文件夹-create_dir_if_not_exist.py
- VS Code设置中文插件
- Redis:复制,第1部分——概述 复制与分片、哨兵与集群、Redis拓扑
- Error:Trailing spaces not allowed no-trailing-spaces
- 卸载iis express后80端口仍然被占用的解决方法
- 纯CSS实现二级下拉导航菜单
- ios开发 将json格式数据上传服务器
- 在JavaScript面向对象编程中使用继承(4)
- 人工智能大数据时代下的工程伦理问题探讨
- 全球顶级的14位程序员!
- 解压RAR时出现“不可预料的压缩文件末端”的解决方法
- 前端纯CSS导入otf字体包
- Cisco SN查询工具
- Oracle存储过程打印输出错误信息、行号,快速排查
- 【云和恩墨大讲堂】杨俊 | 迁移神技XTTS-恩墨小王子再战32TB跨平台U2L
- tinymind 书法文字识别
- 中国信息安全测评中心-自主原创测评
热门文章
- PyTorch下的可视化工具(网络结构/训练过程可视化)
- CV十年发展之观察:1.5万篇论文透视「业界」与「学界」,到底谁更胜一筹?...
- 他给女朋友做了个树莓派复古相机,算法代码可自己编写,成本不到700元丨开源...
- 2020年「21篇」医学影像算法最佳综述
- 你离时间管理大师,就差这副眼镜了
- 疫情之下,村干部们的智慧越来越...
- 漫画:大学教师暑期真实生活图鉴
- 【每日一算法】杨辉三角到底是什么?
- Flask-RESTful的简单使用
- AOI检测基本原理与设备构成