美文网首页Java编程社区Java程序员面试宝典
java反射之获取字节码且通过字节码创建对象

java反射之获取字节码且通过字节码创建对象

作者: C语言中文社区 | 来源:发表于2019-07-04 23:07 被阅读2次

获取字节码的三种方式:

  • Object类的getClass()方法
  • 静态属性class
  • Class类中的静态方法forName()

接下来我们通过代码实例来看看这三种方式以及通过字节码创建对象
首先我们创建普通的Java项目
项目目录结构


Person.java

package com.wangc.reflect;

public class Person {
    
    String name;
    Integer age;
    public Person() {
        super();
    }
    public Person(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }
    
    public void show(){
        System.out.println("我是:" + name + ",年龄:" + age);
    }
}

Test.java

package com.wangc.reflect;

import java.lang.reflect.Constructor;

public class Test {
    
    public static void main(String[] args) throws Exception {
        //获取字节码的三种方式
        Class<?> clazz1 = Class.forName("com.wangc.reflect.Person");
        
        Class<Person> clazz2 = Person.class;
        
        Person person = new Person();
        Class<? extends Person> clazz3 = person.getClass();
        
        System.out.println(clazz1 == clazz2);
        System.out.println(clazz2 == clazz3);
        
        
        //有了字节码之后就可以通过字节码创建对象
        Person person2 = (Person) clazz1.newInstance();
        person2.name = "zhangsan";
        person2.age = 25;
        person2.show();
        
        //获取构造器
        Constructor<?> constructor = clazz1.getConstructor(String.class, Integer.class);
        //通过有参构造器来创建对象
        Person person3 = (Person) constructor.newInstance("lisi", 28);
        person3.show();
    }
}

代码运行结果:

true
true
我是:zhangsan,年龄:25
我是:lisi,年龄:28

相关文章

  • java反射之获取字节码且通过字节码创建对象

    获取字节码的三种方式: Object类的getClass()方法 静态属性class Class类中的静态方法fo...

  • 反射机制(三)操作构造器

    通过反射来获取某一个类的构造器:1>获取该类的字节码对象;2>从该字节码对象中去找需要获取的构造器; Class类...

  • Java反射

    1、反射机制有什么用? 通过java语言中的反射机制可以操作字节码文件(可以读和修改字节码文件。)通过反射机制可以...

  • 反射

    反射: 当一个字节码文件加载到内存的时候,jvm会对该字节码进行解剖,然后会创建一个对象的Class对象,把字节码...

  • 新鲜出炉,深入讲解java反射的底层原理,这篇算讲的不错了!

    反射 反射 Java代码和Java文件 Java文件和.class字节码文件 class字节码文件在内存中的位置 ...

  • 反射

    反射 当一个字节码文件加载到内存的时候,jvm会对该字节码进行解剖,然后会创建一个对象的Class对象,把字节码文...

  • Java高级_反射

    1. 反射的基本概念 反射就是通过类的字节码文件来获取类的成员并使用的一项技术 2. 获取字节码文件对象的三种方式...

  • 注解@annotation

    注解如何生效 传入字节码对象,通过反射获取类, 字段, 方法上的注解对象 通过注解对象获取注解上的值 Car In...

  • 反射

    反射 class 获取class字节码对象的三种方式: //1、通过类.class Class cla...

  • JavaSE进阶十一 反射机制一

    1,反射机制 反射机制有什么作用通过java语言中的反射机制可以操作字节码文件;有点类似于黑客,可以读和修改字节码...

网友评论

    本文标题:java反射之获取字节码且通过字节码创建对象

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