zoukankan      html  css  js  c++  java
  • 什么是反射?可以解决什么问题?

    反射是指程序在运行状态中,

    1,可以对任意一个类,都能够获取到这个类的所有属性和方法。

    2,对于任意一个对象,都可以调用它的任意一个方法和属性

     

    反射是一种能力

    一种在程序运行时,动态获取当前类对象的所有属性和方法的能力,可以动态执行方法,给属性赋值等操作的能力

    Class代表的就是所有的字节码对象的抽象,类

    反射,让我们的java程序具备动态性

    这种动态获取类信息及调用对象方法的功能称为反射

     

    在java中,Class类就是关键API

    public class Reflection {
    
        
        public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
            //1.以class对象为基础
            Class<?> clazz = Class.forName("com.reflection.Student");
            System.out.println(clazz);
            //2.类中每一部分,都有对应的类与之匹配
            //表示属性的类
            Field nameField =
                    clazz.getField("name");
            //表示方法的类
            Method helloMethod = clazz.getDeclaredMethod("hello", String.class);
            //表示构造方法的类
            Constructor<?>[] constructors = clazz.getConstructors();
        }
    }

    这种能力带来很多的好处,在我们的许多框架的背后实现上,都采用了反射的机制来实现动态效果。

    框架是提供一种编程的约定

    比如@Autowrie 就能实现自动注入

    @Autowrie

    private IUserService userService;

    注解的解析程序,来扫描当前的包下面有哪些属性加了这个注解,一旦有这个注解,就要去容器里面获取对应的类型的实现,然后给这个属性赋值。

     

    思考题:如何实现一个IOC容器?

  • 相关阅读:
    vue的nuxt框架中使用vue-video-player
    多线程学习笔记-1
    Java模拟简单的KFC程序
    Hankson最大公约数最小公倍数的“逆问题”
    C语言实现三天打鱼两天晒网
    关于border-color的一些小问题
    CSS的超链接样式设计
    CSS ID选择器&通配选择器
    CSS标签选择器&类选择器
    CSS布局属性
  • 原文地址:https://www.cnblogs.com/MJyc/p/13969819.html
Copyright © 2011-2022 走看看