获取字节码的三种方式

获取java字节码有三种方式,假设要获得的字节码的类为requireClass

1 使用类的静态方法 Class classOne = requireClass.class;

2 使用类对象的getClass方法 Class classTwo = requireClassInstance.getClass;

3 使用Class类的静态方法 Class.forName Class classThree = Class.forName("类的全路径名");

在反射的实际应用中通常采用第三种方法

public class ReflectDemo {

    public static void main(String[] args) throws ClassNotFoundException {

        Test test  = new Test();

        Class one = Test.class;

        Class two = test.getClass();

        Class three = Class.forName("reflect.test.Test");

        System.out.println(one);

        System.out.println(two);

        System.out.println(three);

        System.out.println(one==two);

        System.out.println(one==three);

        System.out.println(three==two);

    }

}

running resul

---------------------------------------------------------------------------------------------------------------

class reflect.test.Test

class reflect.test.Test

class reflect.test.Test

true

true

true

可以发现每个类的字节码为唯一的 且类的字节码存放在bin文件夹下

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个这个类的java.lang.Class对象,用来封装类在方法区类的对象

时间: 2024-10-09 09:59:15

获取字节码的三种方式的相关文章

Java反射获取class对象的三种方式,反射创建对象的两种方式

Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName 静态方法. 前提:已明确类的全路径名. 第二种,使用 .class 方法. 说明:仅适合在编译前就已经明确要操作的 Class 第三种,使用类对象的 getClass() 方法. 适合有对象示例的情况下 package com.reflection; /** * Created by Liuxd

Java Class类以及获取Class实例的三种方式

T - 由此 Class 对象建模的类的类型.例如,String.class 的类型是Class<String>.如果将被建模的类未知,则使用Class<?>. [java] view plain copy print? public final class Class<T> extends Object  implements java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.r

(六)、获取Keystone token的三种方式

让我们粗略看一下,三种从Keystone获得token的方式.在尝试这三种方式之前,你得确保已经装好Keystone终端.如果还没有装好,可以看grizzly安装版本的Keystone 安装部分. Note:这些呼叫都将请求的是Keystone v2版本. 假定你已经安装好,并且Keystone已经跑起来了:).然后接下来我们首先要做的便是,发一个简单的cURL发送请求: $ curl -d '{"auth": {"tenantName": "demo&q

java webservice服务器端获取request对象的三种方式

有的时候在webservice里我们需要获取request对象和response对象,比如想要获得客户端的访问ip的时候就需要这么做,下面说三种方式,当然三种方式可能是针对不同方式部署webservice获取request对象的方法. 第一种:先配置注入: @Resource private WebServiceContext webServiceContext; 其次是下面的代码: MessageContext mc = webServiceContext.getMessageContext(

获取Class对象的三种方式

1:通过每个对象都具备的方法getClass来获取.弊端:必须要创建该类对象,才可以调用getClass方法. 2:每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class.弊端:必须要先明确该类. 前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成. 3:使用的Class类中的方法,静态的forName方法. 指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可. // 1. 根据给定的类名来获得  用于类加载 String c

反射获取Class对象的三种方式

import cn.qujianlei.domain.Person; public class ReflectDemo { public static void main(String[] args) throws ClassNotFoundException { /* * * 反射技术:动态的获取类以及类中的成员,并可以调用该类的成员. * 以前有什么类就new什么对象. * 现在没有类,给什么类就new什么对象. * * * 反射技术的出现提高了程序的扩展性 * 反射技术中最重要的一点:先获

jdbc 获取connection 对象的三种方式

获取数据库连接方法一:驱动实现类 1 //创建mysql的Driver对象 2 Driver driver=new com.mysql.jdbc.Driver(); 3 //jdbc url 定位一个数据库: 4 String url="jdbc:mysql://localhost:3306/jdbcdb"; 5 //用于存储用户名和密码 6 Properties info=new Properties(); 7 info.put("user", "roo

【转】获取Activity启动时间的三种方式

应用程序的启动时间也是衡量应用性能好坏的重要指标之一,所以我们来看一下如何获取一个程序启动所需的时间. 获取程序启动的时间有几种方法,详情见下文分析: 方法一:通过log获取. 思路:通过记录开始时间与结束时间,计算时间差来获取启动时间. 在onCreate()方法最后一行加入log.e(“TAG”,”"finish),通过查看logcat中的log输出来计算程序启动时间. 此种方法需要有源代码,并且比较原始,不推荐. 方法二:通过ActivityManager轮训来实现获取启动时间. 思路:通

获取tr td 的三种方式

     /* 第一种,原生的js,先获取table然后获取tr标签,然后遍历td */ //       $('#selectIds').val(""); //        var table = document.getElementById("tb_table");//获取第一个表格   //           var array = table.getElementsByTagName("tr");//所有tr //