反射?它是什么?浅谈反射

一开始学习反射的时候,有点不太理解什么是反射,后来我查了一下关于反射得理解

反射是什么?

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();
            }
        
        }
 
原文地址:https://www.cnblogs.com/carsar/p/5538690.html