java 反射的概念
反射的引入:
Object obj = new Student();
若程序运行时接收到外部传入的一个对象,该对象的编译类型是Object,但程序又需要调用该对象运行类型的方法:
1.若编译和运行类型都知道,使用 instanceof判断后,强转。
2.编译时根本无法预知该对象属于什么类,程序只能依靠运行时信息来发现对象的真实信息,这时就必须使用反射了。
3.要是想得到对象真正的类型,就得使用反射。
什么是反射机制?
简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。
反射机制的优点与缺点:
为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念,
静态编译:在编译时确定类型,绑定对象,即通过。
动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。
一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发。
它的缺点是对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。
Class类和Class类实例
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类就是Class类。
对比提问:众多的人用一个什么类表示?众多的Java类用一个什么类表示?
人 Person
Java类 Class
对比提问: Person类代表人,它的实例对象就是张三,李四这样一个个具体的人,Class类代表Java类,它的各个实例对象又分别对应什么呢?
对应各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码,等等;
一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同的类的字节码是不同的,所以它们在内存中的内容是不同的;
用类来描述对象,类:描述数据的结构
用元数据来描述Class,MetaData(元数据):描述数据结构的结构;
反射就是得到元数据的行为;
备注:一个类在虚拟机中只有一份字节码;
相关文章
- java安装1.8和1.7,报错:Error: Registry key 'SoftwareJavaSoftJava Runtime Environment'CurrentVers
- 朴素贝叶斯分类算法-----java
- Java版Word开发工具Aspose.Words功能解析:添加和验证PDF文档中的数字签名
- 2014面试总结--java、数据 方向
- 回归JAVA: java文件编译后,出现xx$1.class的原因
- java 写 高精度加法 HDU1002
- Java final static
- 并发编程--Java的线程通信方式概念及使用示例
- Java多例Bean的应用场景-easyExcel导入
- Ubuntu安装java的几种方式以及多个JAVA版本的切换
- 各大厂800道Java后端经典面试题合集
- 【Java】java基本知识
- Java中PO、DO、TO、DTO、 VO、 BO、POJO 、DAO的概念
- 【Java】java: 无法访问org.testng.annotations.Test
- 第64节:Java中的Spring Boot 2.0简介笔记
- 第七节:详细讲解Java中的日期,java.util.date
- Java反射机制
- Java学习-050-AES256 之 java.security.InvalidKeyException: Illegal key size or default parameters 解决方法
- Java中Properties类的操作
- Java_类似java.lang.VerifyError: Expecting a stackmap frame at branch target 22 in method的解决方法
- java字符串数组排序
- Java测试工具Mock详解
- 详解Java【泛型】
- Java操作Mongodb 保存/读取java对象到/从mongodb
- 【JAVA】Map集合(映射集合)、键值对的概念&集合对象的取和放
- JAVA:从public static void main(String args[])開始
- Eclipse迅速执行:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
- 老Java程序员花一天时间写了个飞机大战,很舒服!
- 【Java笔记】配置文件java.util.Properties类的使用