首页 > 编程语言 > 详细

java——反射

时间:2021-05-08 16:23:15      阅读:11      评论:0      收藏:0      [点我收藏+]
import java.lang.reflect.Constructor;
/**
 * 通过三种方式的反射创建对象
 */
public class Demo19 {
    public static void main(String[] args) throws Exception {
        //不使用反射建立对象
        Person person = new Person();
        System.out.println(person);
        //方式一(通过建立对象)
        Class clazz1 = person.getClass();
        Constructor constructor1 = clazz1.getConstructor();
        Person person1 = (Person) constructor1.newInstance();
        System.out.println(person1);
        //方式二(通过所在路径--相对路径)(建议使用)
        Class clazz2 = Class.forName("com.niuzong.demo.Person");
        Constructor constructor2 = clazz2.getConstructor();
        Person person2 = (Person) constructor2.newInstance();
        System.out.println(person2);
        //方式三(通过类名)
        Class clazz3 = Person.class;
        Constructor constructor3 = clazz3.getConstructor();
        Person person3 = (Person) constructor3.newInstance();
        System.out.println(person3);
    }
}

 

JVM类加载流程和内存结构

技术分享图片

 

 

 普通情况生成对象:

 Person person = new Person();

生成对象步骤:
  1.编译器加载Person.class文件.
  2.查找构造函数Person().
  3.通过构造函数Person()创建对象.

使用反射生成对象:
Class clazz2 = Class.forName("com.niuzong.demo.Person");
Constructor constructor2 = clazz2.getConstructor();
Person person2 = (Person) constructor2.newInstance();
生成对象步骤:
  1.运行期加载Person.class文件.
  2.创建构造函数Person().
  3.通过狗仔函数Person()创建对象.
  
  

java——反射

原文:https://www.cnblogs.com/zhujianqiang/p/14744548.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!