美文网首页
Java反射

Java反射

作者: 空城EN | 来源:发表于2017-09-05 23:53 被阅读0次

最近在研究spring框架,而spring的ioc是基于反射机制来完成的,因此先来学习下反射

  1. 使用场景
    当我们的程序在运行时,需要动态的加载一些类,而这些类可能由于之前用不到所以没有加载到jvm,而是在运行时根据需要才加载,比如,我们之前连接mysql时,都要动态的加载mysql驱动程序,这时就要用到反射。

  2. 原理机制

  • java文件会被被编译成class文件
  • 通过class文件名获取这个文件
  • 调用newInstance动态的创建这个类
  1. 实现
  • 获取class文件(三种方法)
    1. Class.forName
    2. 对象.getClass
    3. 对象.class
  • 创建对象
    调用newInstance()方法
  • 获取对象参数
    1. getFiled: 访问公有的成员变量
    2. getDeclaredField:所有已声明的成员变量。但不能得到其父类的成员变量
  • 调用对象方法
    1. getDeclaredMethods()方法返回类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
      2.getMethods()方法返回某个类的所有公用(public)方法,包括其继承类的公用方法。
  1. 实例
public class testReflection {

    public int age=10;
    public int getAge(){
        return age;
    }
    public int getSome(int i){
        return i;
    }

    public static void main(String[] args) throws Exception{
        Class<?> clazz=Class.forName("xy.reflection.testReflection");
        //无参方法
        Method method=clazz.getMethod("getAge");
        int i=(Integer) method.invoke(clazz.newInstance());
        System.out.println(i+"");
        //有参方法
        Method m=clazz.getMethod("getSome", int.class);
        int j=(Integer) m.invoke(clazz.newInstance(),100);
        System.out.println(j+"");
    }

    @Test
    public void testMethod() throws Exception{
        Class<?> clazz=Class.forName("xy.reflection.testReflection");
        System.out.println(clazz.getName());
       //获取对象的属性
        Field field=clazz.getDeclaredField("age");
        field.set(this,2);
        System.out.println(age+"");

    }
}

相关文章

  • 博客地址

    java注解-01、java注解-02、Git面试资源java反射-01、java反射-02、java反射-03为...

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java 反射机制

    Java 反射机制 什么是反射 Java 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。 ...

  • 一探究竟:Java反射效率低的原因到底在哪?

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • 面试官说:大家都说 Java 反射效率低,你知道原因在哪里么

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • Java面试题之JavaSE高级

    一、Java中的反射 1.说说你对Java中反射的理解 java中的反射首先是能够获取到Java...

网友评论

      本文标题:Java反射

      本文链接:https://www.haomeiwen.com/subject/cwzpjxtx.html