Java反射机制详情(2)
| |目录
- 运行环境
- Java语言的反射机制
- Class中的常用方法(获得类的构造方法)
- Class中的常用方法(获得类的属性)
- Class中的常用方法(获得类的方法)
- 反射动态调用类的成员
1.运行环境
JDK8+lntellij IDEA 2018.3
2.Java 语言的反射机制
- Java 反射是Java语言的一个很重要的特征,它使得Java具有了“动态性”。
- Java提供了一套机制来动态获取类的信息以及动态调用对象的方法的功能,这套机制就叫——反射
- 反射机制是如今很多流行框架的实现基础,其中包括Struts、Spring、Hibernate等。
3.Class中的常用方法(获得类的构造方法)
- getConstructors():获得类的所有的public类型的构造方法。
- getDeclaredConstructors():获得类所有的构造方法
- getConstructor(Class[] parameterTypes):获得类的特定public的构造方法, parameterTypes 参数指定构造方法的参数类型。
- getDeclaredConstructor(Class[] parameterTypes):获得类指定的所有的构造方法
4.Class中的常用方法(获得类的属性)
- getFields():获得类的public类型的属性。
- getDeclaredFields():获得类本身的所有属性
- getField(String):获得指定名字的public类型的属性对象
- getDeclaredField(String)获得类自己的指定名字的属性对象
Field类:
- getModifiers():获得属性的修饰符(Modifier.toString(int)显示对应的修饰符类型)
- getType() : 获得属性的类型
5.Class中的常用方法(获得类的方法)
- getMethods():获得类的public类型的方法。
- getDeclaredMethods():获得类的所有方法。
- getMethod(String name, Class[] parameterTypes):获得类的特定public的方法, name参数指定方法的名字, parameterTypes 参数指定方法的参数类getDeclaredMethod(String name, Class[] parameterTypes)
Method类:
- getParameterTypes() :获得方法的所有参数类型
- getReturnType():获得方法的返回值类型
6.反射动态调用类的成员
调用方法步骤:
设定调用方法的参数列表(Class[])
获得调用方法的对象(Method)
设定调用方法的参数的值(Object[])
普通方法:invoke(obj,values);
构造方法:newInstance(values)
调用属性步骤:
根据属性名字获得属性对象(Field)
赋值:set(obj,value)
取值:get(obj) 如果需要强制访问类的私有成员,则需要设定: setAccessible(true);
Øjdbc.properties代码
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
user=root
password=
Ø/*jdbc读到内存中反射体验*/代码
public class DBUtil{
static Properties properties = new Properties();
private static String DRIVER;
private static String URL;
private static String USER;
private static String PASSWORD;
public static void main(String[] args) throws IOException {
System.out.println("main:"+"hello");
Connection connection=DBUtil.getConnection(URL,USER,PASSWORD);
}
static {
String path="jdbc.properties";
InputStream is= DBUtil.class.getClassLoader().getResourceAsStream(path);
try {
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
}
DRIVER= properties.getProperty("driver");
URL= properties.getProperty("url");
USER= properties.getProperty("user");
PASSWORD=properties.getProperty("password");
System.out.println("DRIVER:"+DRIVER+"URL:"+URL+"");
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
static Connection connection= null;
public static Connection getConnection(String url,String user,String password){
try {
connection= DriverManager.getConnection(url,user,password);
System.out.println("connection:"+connection);
} catch (SQLException e) {
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
return connection;
}
}
Ø三种获取类,代码
public class ReflectDemo1 {
public static void main(String[] args) {
Student student = new Student();
//1. object.getClass(); 引用类型, .getClass(),定义在Object对象
Class clzStu1=student.getClass();
//2. .class 适用于所有的数据类型
Class clzStu2=Student.class;
//3. Class.forName(""); 先把类加载到内存中,得到类对象
Class clzStu3=null;
try {
clzStu3=Class.forName("com.javaboy.pojo.Student");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println(clzStu1==clzStu2);
System.out.println(clzStu2==clzStu3);
System.out.println(clzStu1==clzStu3);
}
}
Ø效果图

Ø总结
Class是一个特殊的类,
它的实例用来表示一个.class文件在内存中的存在形势。
反射就是照镜子,照出类的内部结构。 利用反射,可以在运行状态下初始化类。
心得:
为什么要努力?
因为还有很多人毫不费力的过着我想要的生活
因为我对这个世界还有欲望,为了更自由,为了被尊重
为了不把世界让给我讨厌的人。
为了对得起未来的自己
如果你从此时此刻开始努力,最坏的结果,不过是大器晚成
今天是你余生中最年轻的一天,从今天去开始努力,即使暂时看不到希望
也要相信自己,相信明天你会感谢今天的努力。
Java反射机制详情(2)的更多相关文章
- Java反射机制详情
1.运行环境 JDK8+lntellij IDEA 2018.3 2.反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个 ...
- 11.Java反射机制 哦对了,前面的序号来自随笔关于编程之路的思索第一篇
基本概念 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? 答案是肯定的. 这种动态获取类的信息以及动态调用对象的方法的功能来自于J ...
- 转!!java反射机制
Java 反射机制 基本概念 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法? 答案是肯定的. 这种动态获取类的信息以及动态调用对象 ...
- Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...
- 第28章 java反射机制
java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...
- Java反射机制
Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射: 静态编译:在编译时确定类型,绑定对象,即通过 ...
- java基础知识(十一)java反射机制(上)
java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...
- java基础知识(十一)java反射机制(下)
1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...
- Java反射机制专题
·Java Reflection Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方 ...
随机推荐
- 【macOS】Homebrew & Homebrew cask macOS软件包管理神器
Homebrew Homebrew 与 Homebrew Cask Homebrew 是基于 OS X 的套件管理工具,是一个开源的 Ruby 脚本,专门用于快速下载软件.更通俗地讲,Homebrew ...
- 【笔记】《Redis设计与实现》chapter11 AOF持久化
11.1 AOF持久化的实现 命令追加 当AOF持久化处于开启状态时,服务器执行完一个写命令之后,会以协议格式将被执行的写明了追加到服务器状态的aof_buf缓冲区 struct redisServe ...
- 深入学习spring cloud gateway 限流熔断
前言 Spring Cloud Gateway 目前,Spring Cloud Gateway是仅次于Spring Cloud Netflix的第二个最受欢迎的Spring Cloud项目(就GitH ...
- 数据结构与算法-江西师范大学865(针对考研or面试)
可以加我微信chenyoudea免费要江西师范大学865资料全套pdf 目录 第一篇 数据结构与算法(针对考研or面试) 第二篇 真题演练 第三篇 复试 第四篇 推荐阅读 第一篇 数据结构与算法(针对 ...
- 1. HTML <fieldset> 标签
定义和用法 fieldset 元素可将表单内的相关元素分组. <fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段. 当一组表单元素放到 <fieldset> ...
- 按照自己的思路去研究Spring AOP源码【1】
目录 一个例子 Spring AOP 原理 从@EnableAspectJAutoProxy注解入手 什么时候会创建代理对象? 方法执行时怎么实现拦截的? 总结 问题 参考 一个例子 // 定义一个切 ...
- 在nginx配置将请求转发到某个真实后端服务ip
一.打开nginx机器的nginx配置文件 命令: locate nginx.conf 会列出所有nginx.conf文件的地址, 一般咱们要用的nginx配置文件是/usr/local/nginx/ ...
- netcore获取配置文件的内容
结合了好几个哥们的写法,最终我使用了这个版本,现在把我这个版本的写出来,如果该版本和您的版本类似或者一样,那可能是借鉴您的 using Microsoft.AspNetCore.Hosting; us ...
- SpringIOE-以xml方式实现
SpringIOC框架简单实现 简单介绍 依赖注入( Dependency Injection ,简称 DI) 与控制反转 (IoC) 的含义相同,只不过这两个称呼是从两个角度描述的同一个概念,具体如 ...
- 【插件篇】前段bootstrap-table-treegrid试手,解决无法显示树形列表或者图标不显示问题。
说明:具体代码操作我就不贴了.官方有正规的例子!bootstrap-table-examples传送 使用注意事项: 传入的id和pid可以是string类型的(我后台返回的是Long类型转换成str ...