慕课网_反射——Java高级开发必须懂的
第1章 Class类的使用
1-1 Class类的使用 (15:18)
第2章 动态加载类
2-1 Java 动态加载类 (13:19)
第3章 获取方法信息
3-1 Java 获取方法信息 (17:06)
第4章 获取成员变量构造函数信息
4-1 Java 获取成员变量构造函数信息 (14:44)
第5章 方法反射的基本操作
5-1 Java 方法反射的基本操作 (13:55)
import java.lang.reflect.Method; public class Hello {
public static void main(String[] args) {
/*
* 要获取print(int a,int b)方法 1.要获取一个方法就是获取类的信息,获取类的信息首先要类的类类型
*
* 2.获取方法 名称和参数列表来决定 getMethod获取的是public的方法 getDeclaredMethod自己声明的方法
*/ A a1 = new A();
Class c = a1.getClass(); try {
Method m1 = c.getDeclaredMethod("print", int.class, int.class);
Method m2 = c.getDeclaredMethod("print", String.class, String.class); // 方法的反射操作
// 方法如果没有返回值返回null,有返回值返回具体的返回值
Object o1 = m1.invoke(a1, 10, 20);
Object o2 = m2.invoke(a1, "hello", "world"); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} class A {
public void print(int a, int b) {
System.out.println(a + b);
} public void print(String a, String b) {
System.out.println(a.toUpperCase() + "," + b.toLowerCase());
}
}
第6章 通过反射了解集合泛型的本质
6-1 Java 通过反射了解集合泛型的本质 (07:53)
import java.lang.reflect.Method;
import java.util.ArrayList; public class Hello {
public static void main(String[] args) {
ArrayList list1 = new ArrayList();
ArrayList<String> list2 = new ArrayList<String>();
list2.add("hello");
// list1.add(20);错误的 Class c1 = list1.getClass();
Class c2 = list2.getClass();
System.out.println(c1 == c2);
// 反射的操作都是编译之后的操作 /*
* c1==c2结果返回true说明编译之后集合的泛型是去泛型化的 Java中集合的泛型,是防止错误输入的,只在编译阶段有效, 绕过编译就无效了
* 验证:我们可以通过方法的反射来操作,绕过编译
*/
try {
Method m = c2.getMethod("add", Object.class);
m.invoke(list2, 20);// 绕过编译操作就绕过了泛型 System.out.println(list2.size());
System.out.println(list2);
} catch (Exception e) {
e.printStackTrace();
}
}
}
慕课网_反射——Java高级开发必须懂的的更多相关文章
- 反射---Java高级开发必须懂的
理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助. 一.Class类的使用 1.万事万物皆 ...
- java基础(十一 )-----反射——Java高级开发必须懂的
本文我们通过一个实际的例子来演示反射在编程中的应用,可能之前大家对反射的学习,仅仅是停留在概念层面,不知道反射究竟应用在哪,所以是一头雾水.相信通过这篇教程,会让你对反射有一个更深层次的认知. 概念 ...
- java reflect反射---Java高级开发必须懂的
理解反射对学习Java框架有很大的帮助,如Spring框架的核心就是使用Java反射实现的,而且对做一些Java底层的操作会很有帮助. 一.Class类的使用 1.万事万物皆对象,( ...
- 《深入理解Java虚拟机》-----第8章 虚拟机字节码执行引擎——Java高级开发必须懂的
概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念 ,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而 ...
- 《深入理解Java虚拟机》-----第7章 虚拟机类加载机制——Java高级开发必须懂的
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 7.1 概述 上一章我们了解了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都需要 ...
- 《深入理解Java虚拟机》-----第6章 类文件结构——Java高级开发必须懂的
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 6.1 概述 记得在第一节计算机程序课上我的老师就讲过:“计算机只认识0和1,所以我们写的程序需要经编译器翻 ...
- java基础(十五)----- Java 最全异常详解 ——Java高级开发必须懂的
本文将详解java中的异常和异常处理机制 异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常. Java异常的分类和类结构图 1.Java中的所 ...
- java基础(十四)-----详解匿名内部类——Java高级开发必须懂的
在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.匿名内部类使用的形参为何要为final. 使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: n ...
- java基础(十三)-----详解内部类——Java高级开发必须懂的
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 为什么要使用内部类 为什么要使用内部类?在<Think in java>中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能 ...
随机推荐
- python爬虫练习之批量下载zabbix文档
# -*- coding: UTF-8 -*- import requests,re,time url = 'https://www.zabbix.com/documentation/3.4/zh/m ...
- 009(1)-saltstack之salt-ssh的使用及配置管理LAMP状态的实现
1 salt-ssh的使用 1. 安装salt-ssh[root@slave1 .ssh]# yum install -y salt-ssh 2. 配置salt-ssh # Sample salt-s ...
- 多线程与UI操作(一)
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它. 此时它将会在内部调用n ...
- D-query SPOJ - DQUERY (莫队算法裸题)
Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query is a pair (i, j) ...
- 第06课:GDB 常用命令详解(下)
本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 6.1 disassemble 命令 当进行 ...
- beautifulsoup4 用法一二
声明一个beautifulsoup4对象 bs = ( url,//路由 html_parser,//解析html代码 encoding//编码)//另一种请求解析方法 import requests ...
- 2019春Python程序设计练习7(0430--0506)
1-1 对文件进行读写操作之后必须显式关闭文件以确保所有内容都得到保存. (2分) T F 1-2 以追加模式打开文件时,文件指针指向文件尾.(2分) T F 1-3 ...
- wx小程序知识点(四)
四.页面间数据传递 和 参数传值 (1)页面间数据传递 ① 全局变量 ② 页面跳转或重定向时使用url携带参数(wx.navigateTo(urlStr)) ③ 使用组件模板 template < ...
- Redis常用数据类型底层数据结构分析
Redis是一种键值(key-Value)数据库,相对于关系型数据库,它也被叫作非关系型数据库 Redis中,键的数据类型是字符串,但是为了非富数据存储方式,方便开发者使用,值的数据类型有很多 字符串 ...
- HGOI 20190821 慈溪一中互测
Problem A 给出一个$n$个点$m$条边的仙人掌图(每条边最多处于一个简单环中). 使用$c$种颜色对这张图中的顶点染色,使得每一条无向边连接的两个点颜色不同. 求染色的方案数,$mod \ ...