美文网首页
java反射

java反射

作者: Twins_zuoyou | 来源:发表于2019-07-10 12:57 被阅读0次

反射:

概念:能够分析类能力的程序称为反射。反射机制的功能极其强大,在下面可以看到,反射机制可以用来:

  • 在运行时分析类的能力;
  • 在运行时查看对象,例如,编写一个toString 方法供所有类使用;
  • 实现通用的数组操作代码;
  • 利用Method 对象,这个对象很像C++中的函数指针;

获取类对象:获取类对象有3种方式

  • Object --> getClass(); 因为Object类中的getClass方法,因为所有类都继承Object类,从而调用Object类来获取;
  • 任何数据类型(包括基本数据类型)都有一个“静态”的class属性
  • 通过class类的静态方法:forName(Stringc lassName)(属性)

package fanshe;
public class Fanshe {

    public static void main(String[] args) {
        //第一种方式获得class对象
        Student stu1 = new Student();
        Class stuClass = stu1.getClass();

        System.out.println(stuClass.getName());
        //第二种方式获取Class对象
        Class stuClass2 = Student.class;
       //判断第一种方式获取的Class对象和第二种方式获取的是否是同一个
        System.out.println(stuClass == stuClass2);

        // 第三种方式获取class对象
        try{
            //注意此字符串必须是真是路径,就是带报包名的类路径,包名.类名
            Class stuClass3 = Class.forName("fanshe.Student"); 
            //判断三种凡是是否获取的是同一个class对象
            System.out.println(stuClass3 == stuClass2);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
    }
}

通过class对象可以获取某个类中的:构造方法、成员变量、成员方法;并访问成员;

  • 获取构造方法:
    • 批量的方法:
      public Constructor[] getConstructors(): 所有“公有的”构造方法
      public Constructor[] getDeclaredConstructors(): 获取所有的构造方法(包括私有、受保护的、默认、公有)

    • 获取单个的方法,并调用:
      public Constructor getConstructor(Class... parameterTypes): 获取单个的公有构造方法;
      public Constructor getDeclareConstructors(Class... parameterTypes): 获取“某个构造方法”,可以是私有的、或受保护、默认、公有;

      调用构造方法:
      Constructor -> newInstance(Object ... initargs)

  • newInstance 是Constructor类的方法(管理构造函数的类)
    api的解释为:
    newInstance(Object ... initargs)
    使用此Constructor对象表示的构造方法来创建该构造方法的声明类的新实例,并用指定的初始化参数初始化该实例。它的返回值是T类型,所以newInstance是创建了一个构造方法的声明类的新实例对象,并为之调用。

参考:https://blog.csdn.net/lwl20140904/article/details/80163880

相关文章

  • 博客地址

    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/egackctx.html