一开始学习反射的时候,有点不太理解什么是反射,后来我查了一下关于反射得理解
反射是什么?
1 定义:
- JAVA Reflection 我给它的定义就是动态的调用的一个对象的方法,或者动态的获得一个对象的属性
- 我查了一下关于百度的介绍
-
-
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。 但是JAVA有着一个非常突出的动态相关机 制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载 一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其 methods。
这是百度关于他的说明有点绕反正大体就是一开始定义的说明
下面就是源于反射的说明
public class Demo2_Reflect { /** * 榨汁机(Juicer)榨汁的案例 * 分别有水果(Fruit)苹果(Apple)香蕉(Banana)桔子(Orange)榨汁(squeeze) * @throws Exception */ public static void main(String[] args) throws Exception { /*Juicer j = new Juicer(); //j.run(new Apple()); j.run(new Orange());*/ BufferedReader br = new BufferedReader(new FileReader("config.properties"));//创建输入流对象,关联配置文件 Class<?> clazz = Class.forName(br.readLine()); //读取配置文件一行内容,获取该类的字节码对象 Fruit f = (Fruit) clazz.newInstance(); //通过字节码对象创建实例对象 Juicer j = new Juicer(); j.run(f); } } interface Fruit { //定义一个接口 public void squeeze(); } class Apple implements Fruit { //定义一个Apple类 继承接口 public void squeeze() { System.out.println("榨出一杯苹果汁儿"); } } class Orange implements Fruit { //定义一个Orange类继承接口 public void squeeze() { System.out.println("榨出一杯桔子汁儿"); } } class Juicer { //定义一个Juicer类 public void run(Fruit f) { f.squeeze(); } }
-
时间: 2024-12-18 03:31:50