初识Java反射
来源:互联网 发布:高清网络监控 编辑:程序博客网 时间:2024/06/05 02:49
今天上课一个老师问:一个引用指向一个对象能不能使用这个对象里面的所有公用方法,同学都一一回答可以,结果测试之后都错了。先举个列子吧。
1. 实体类测试类学生
package com.test.entity;public class Student {private String name;public void Singing(){System.out.println("sing a song");}public String getName() {return name;}public void setName(String name) {this.name = name;}}2.测试代码:
import com.test.entity.Student;public class FeflectTest {public static void main(String[] args) {/* * 用一个object的引用去指向一个学生; * */Object s = new Student();//s.Singing();}}结果注释的地方编译就报错,没有此方法。然后就顺势分析问题,那到底s是Object类型还是Student类型呢。初看应该是Object类型,因为s.Singing()报错嘛。然而答案真是这样吗?
在测试代码中运行代码System.out.println(s.getClass().getName());结构输出com.test.entity.Student。所以理解是错误的,其实s是能执行此方法的,只是在编译器无法成功通过编译。那么怎样才能让s执行方法呢?接下来就要讲到Java中的反射了。
一. java反射机制
.class----->.java 是一个编译的逆过程
通过java反射能访问java的方法,属性,接口等等
二.Class 讲解
java世界里,一切皆对象。各个java对象也是对象,是Class。这个其实就是我们.java文件编译后的.class那个东西,通常较字节码,是java反射中的核心。
获取对象的字节码方式如下:
//第一种方式: Classc = Class.forName("com.test.entity.Student"); //第二种方式: //java中每个类型都有class 属性. Classc1 = Student.class; //第三种方式: //java语言中任何一个java对象都有getClass 方法 Student= new Student(); Classc2 = e.getClass();获取对象的字节码之后就能进行java反射了。
三 通过java反射动态调用方法
java作为先编译后运行的语言,java反射机制能让我们更完全的操作java对象,通过得到的class就能获取对象的属性、方法、构造方法、父类、接口等等。在这里就不赘述了,api讲的非常详细。
import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import com.test.entity.Student;public class FeflectTest {public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {/* * 用一个object的引用去指向一个学生; * */Object s = new Student();Class cs = s.getClass();//获取学生类的classMethod Singing = cs.getMethod("Singing", null);//获取方法,第一个参数为方法名,第二个为方法的参数,是个数组Singing.invoke(s, null);//对应方法的调用,第一个参数为作用的类对象,第二个为方法传递的参数 output:sing a song//s.Singing();}}通过上述代码就能实现一开的需求,绕过编译器动态调用Singing()方法。
10 5
- Java反射之初识
- Java反射机制初识
- 初识Java反射机制
- Java(8)--初识反射
- 初识java反射机制
- Java反射机制初识
- 初识Java反射
- 初识java反射机制
- 初识Java反射
- 初识java反射
- Java反射初识
- 初识java反射机制
- 反射是什么之初识java反射
- 【Java学习】初识Java反射机制
- 【Java进阶】Java反射机制初识
- 黑马程序员_初识Java反射
- 初识 java 反射机制 (二)
- 反射-初识
- ContentResolver与ContentProvider
- 精通 CSS+DIV 网页样式与布局 64
- MFC入门(五)-- 新建子窗口,添加子窗口初始化虚函数,修改版本和图标
- Android动画之Tween Animation变化动画
- 客户信贷应收总额相关
- 初识Java反射
- Excel键盘快捷键大全(八)
- 第十四周课后作业——项目一(2)
- 创业街分店开张啦---原型模式
- 强制关闭软件盘
- 无法打开物理文件 XXX.mdf"。操作系统错误 5:"5(拒绝访问。)"的解决办法
- zookeeper使用和原理探究(一)
- 判断延迟搜索的程序,例如:给pc端的及时搜索用
- 来自一个小人物的唠叨