zoukankan      html  css  js  c++  java
  • Java反射之基础概念

    0.实例准备

    package com.blueStarWei.invoke;
    
    public class Student {
        private String name;
        
        public Student() { }
    
        public Student(String name) {
            super();
            this.name = name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
    
        @Override
        public String toString() {
            return "Student [name=" + name + "]";
        }
    }

    1. 什么是反射

      反射是在运行时(非编译时)动态获取类型的信息(比如:接口信息、成员信息、方法信息等),然后根据这些获取的信息创建对象、访问修改成员、调用方法。

    2. 获取Class类的方式(3种):

    //方式一:Class.forName("包名.类名")
    Class stu1 = Class.forName("com.blueStarWei.invoke.Student");
    //方式二:类名.class
    Class stu2 = Student.class;
    //方式三:实例.getClass()
    Class stu3 = new Student().getClass();

    3. 创建实例对象

    Student student = (Student) stu.newInstance();

    备注:1)该方法通过无参构造的方式创建实例

               2)New一个对象的时候,类可以没有被加载;使用newInstance()方法的时候,必须保证这个类已经加载且已经连接【通过Class.forName()实现】。

    Class clazz = Class.forName("com.blueStarWei.invoke.Student");
    Student student1 = (Student) clazz.newInstance();
    //等价于
    Student student2 = new Student();

    4. 反射的作用

      4.1 判断任意一个对象所属的类;

      4.2 判断任意一个类所具有的成员变量和方法;

      4.3 调用任意对象的方法;

      4.4 构造任意一个类的对象;

      4.5 生成动态代理操作。

  • 相关阅读:
    (转)读《从0到1》
    做事需要愿景,产品都是人思想的投射
    sed 替换有单引号的行
    删除iptables nat 规则
    解决yum安装 openssl-devel时产生的Multilib version problems found错误(转)
    docker 私有仓库 harbor docker-compose
    kubernetes 比较好的案例-创建tomcat-mysql集群 mysql.yaml + workpress.yaml
    配虚拟ip脚本
    kubenetes 1.9 学习 pod
    解决sql和beans中名字不一致问题
  • 原文地址:https://www.cnblogs.com/BlueStarWei/p/8976822.html
Copyright © 2011-2022 走看看