12.反射
发表于|JavaSE
|总字数:126|阅读时长:1分钟|浏览量:
反射
反射允许对成员变量, 成员方法和构造方法的信息进行编程访问
-
作用
- 获取一个类里面所有的信息, 获取到了之后, 再执行其他的业务逻辑
- 结合配置文件, 动态地创建对象并调用
获取class对象
-
三种方式
- 源代码阶段: Class.forName(“全类名”);
- 加载阶段: 类名.class
- 运行阶段: 对象.getClass();
获取构造方法
获取成员变量
获取成员方法
相关推荐
2025-01-18
01.Java基础
Java 基础 JDK 和 JRE JDK 是什么?有哪些内容组成? JDK 是 Java 开发工具包 JVM 虚拟机: Java 程序运行的地方 核心类库: Java 已经写好的东西,可以直接用 开发工具: Javac、Java、jdb、jhat… JRE 是什么?有哪些内容组成? JRE 是 Java 运行环境 JVM、核心类库、运行工具 JDK,JRE,JVM三者的包含关系 JDK 包含 JRE JRE 包含 JVM 运算符 算术运算符 隐式转换(自动类型提升) 把一个取值范围小的数值,转成取值范围大的数据 取值范围: double > float > long > int > short > byte 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算 byte short char 三种类型的数据在运算时,都会直接先提升为 int ,然后再进行运算 123byte a = 10;byte b = 20;数据类型? c = a + b; // a 和 b...
2025-01-18
02.API
API Application Programming Interface 应用程序编程接口 字符串 String 程序中所有字符串文字, 都为此类的对象 字符串不可变, 它们的值在创建后不能被改变 创建对象的方式 String name = "xxx" String name = new String(String original) String name = new String(char[] chs) 需求: 修改字符串的内容 如: abc – {‘a’, ‘b’, ‘c’} – {‘Q’, ‘b’, ‘c’} – Qbc 123char[] chs = {'a', 'b', 'c', 'd'};String s4 = new String(chs);sout(s4); // abcd String name = new String(byte[] chs) 应用场景: 在网络当中传输的数据都是字节信息,...
2025-01-18
03.面向对象
面向对象 类 1234567891011public class 类名 { 成员变量(代表属性,一般是名词) 成员方法(代表行为,一般是动词) 构造器 代码块 内部类} 例如 12345678910111213public class test1.Phone { // 属性(成员变量) String brand; double price; // 行为(方法) public void call() { ... } public void playGame() { ... }} 类的对象 类名 对象名 = new 类名(); 例如: Phone p = new Phone(); 成员变量 修饰符 数据类型 变量名称 = 初始化值 一般无需指定初始化值,存在默认值。 封装 对象代表什么,就得封装对应的数据,并提供数据对应的行为 例如: 人画圆:...
2025-01-18
04.集合
集合 泛型 JDK5引入的特性, 可以在编译阶段约束操作的数据类型, 并进行检查 泛型中不能写基本数据类型 指定泛型的具体类型后, 传递数据时, 可以传入该类类型或其子类型 如果不写泛型, 类型默认是Object 泛型可以在很多地方上定义 泛型类 当一个类中, 某个变量的数据类型不确定时, 就可以定义带有泛型的类 泛型方法 方法中形参类型不确定时使用 修饰符<类型> 返回值类型 方法名(类型 变量名) {} 泛型接口 修饰符 interface 接口名<类型> {} 可在实现类中实现泛型, 或在实现类中继续使用泛型, 在创建对象时再实现泛型 泛型不具备继承性, 但数据具备继承性 泛型通配符 ? 表示不确定的类型, 它可以进行类型的限定 ? extends E : 表示可以传递E或者E所有的子类类型 ? super E : 表示可以传递E或者E所有的父类类型 应用场景 如果我们定义类, 方法, 接口的时候, 如果类型不确定, 就可以定义泛型类, 泛型方法,...
2025-01-18
05.Stream流
Stream流 作用 结合了Lambda表达式, 简化集合和数组的操作 使用步骤 先得到一条Stream流(流水线), 并把数据放上去 获取方式 方法名 说明 单列集合 default Stream stream() Collection中的默认方法 双列集合 无 无法直接使用Stream流 数组 public static Stream stream(T[] array) Arrays工具类中的静态方法 一堆零散数据 public static Stream of(T… values) Stream接口中的静态方法 使用中间方法对流水线上的数据进行操作 名称 说明 Stream filter(Predicate<? super T> predicate) 过滤 Stream limit(long maxSize) 获取前几个元素 Stream skip(long n) 跳过前几个元素 Stream distinct() 元素去重, 依赖(hashCode和equals方法) static...
2025-01-18
06.方法引用
方法引用 把已经有的方法拿过来用, 当做函数式接口中抽象方法的方法体 条件 引用处必须是函数式接口 被引用的方法必须已经存在 被引用方法的形参和返回值需要跟抽象方法保持一致 被引用方法的功能要满足当前需求 方法引用符: :: 分类 引用静态方法 格式: 类名 : : 静态方法 范例: Integer::parseInt 引用成员方法 格式: 对象 : : 成员方法 其他类: 其他类对象 : : 方法名 本类: this : : 方法名 父类: super : : 方法名 引用构造方法 格式: 类名 : : new 范例: Student::new 其他调用方式 使用类名引用成员方法 格式: 类名 : : 成员方法 范例: String::subString 第三条条件变为: 被引用方法的形参, 需要跟抽象方法的第二个形参到最后一个形参保持一致, 返回值保持一致 第一个参数: 表示被引用方法的调用者, 决定了可以引用哪些类中的方法. 在Stream流中, 第一个参数一般都表示流里面的每一个数据. 假设流里面的数据是字符串,...