获得类的字节码对象的三种方式(代码片段)

jiazhiyuan jiazhiyuan     2022-12-04     465

关键词:

java源码(xxx.java)通过编译后形成字节码文件,字节码文件通过类加载器获得字节码对象,

通过字节码对象可以操作源码中的属性和方法。

技术图片

方式一,使用类的class属性:

 

Class<java.util.Date> clazz1 = java.util.Date.class;

 

方式二,通过Class类中的静态方法forName(String className),传入类的全限定名(必须添加完整包名)

 

Class<?> clazz2 = Class.forName(“java.util.Date”);

 

方式三,通过对象的getClass方法来实现,其中,getClass()是Object类中的方法,所有的对象都可以调用该方法

 

java.util.Date str = new java.util.Date();

Class<?> clazz3 = str.getClass();


通过类加载器获得src下的任何资源的路径(类加载器的使用)

public class Demo 
    public static void main(String[] args) 
        //获得Demo的字节码对象
        Class clazz=Demo.class;
        //获得Demo字节码文件的类加载器
        ClassLoader classLoader = clazz.getClassLoader();
        //获得classes(src)下的任何资源,注意!!src下
        String path = classLoader.getResource("jdbc.properties").getPath();
        System.out.println(path);
    

 

三种方式获取一个类的字节码(代码片段)

1importjava.util.Date;23/*4要操作一个类的字节码,需要首先获取到这个类的字节码,怎么获取java.lang.Class实例?5三种方式6第一种:Classc=Class.forName("完整类名带包名");7第二种:Classc=对象.getClass();8第三... 查看详情

反射案例和反射获取字节码class对象的三种方式

反射案例Class对象功能:>获取功能:1.获取成员变量们:>Field[]getFields(): 获取所有public修饰的成员变量>FieldgetField(Stringname):获取指定名称的public修饰符的成员变量>Field[]getDeclaredField 查看详情

反射:获取class对象的三种方式(代码片段)

...括基本数据类型)都有一个“静态”的class属性*3通过Class类的静态方法:forName(StringclassName)(常用)**/publicclassFanshepublicstaticvoidm 查看详情

javase——反射(代码片段)

...解释是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。通俗的理解:(掌... 查看详情

浅析类加载(代码片段)

...,且这个对象在一个JVM内存中是唯一的.此对象中存储的是类的结构信息.所以可以说字节码对象是获取类结构信息的入口.每个类对应的类字节码文件在jvm中都是唯一的【验证】 1/**2*测试类的字节码文件是否是唯一的3*/4privatesta... 查看详情

java反射获取class对象的三种方式,反射创建对象的两种方式(代码片段)

...方法:第一种,使用Class.forName静态方法。前提:已明确类的全路径名。第二种,使用.class方法。说明:仅适合在编译前就已经明确要操作的Class第三种,使用类对象的getClass()方法。适合有对象示例的情况下packagecom.reflect 查看详情

类加载的三种方式比较(代码片段)

虚拟机加载类的途径1、由new关键字创建一个类的实例在由运行时刻用new方法载入如:Dogdog=newDog();2、调用Class.forName()方法通过反射加载类型,并创建对象实例如:Classclazz=Class.forName(“Dog”);Objectdog=clazz.newInstan... 查看详情

java之反射(代码片段)

...运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的法的功能称为java语言的反射机制。 2.... 查看详情

反射详解(代码片段)

...啥是反射?  通过反射机制加载一个class字节码文件,获得并调用任意一个类的所有属性和方法。二、反射能干啥?在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变... 查看详情

步步up2️⃣——反射的获取字节码class对象和class对象功能概述(代码片段)

...Field[]对象,我们想要操作Field[]里的变量name,age等等就要获得class对象。获取class对象的方式还记得第一篇文一面提到的Java代码在计算机里面执行的三个阶段吗?,获取方式就是从每一个阶段来的。第一种方式,从源代 查看详情

反射机制(代码片段)

反射机制的相关类java.lang.reflect.*java.lang.Class代表整个字节码,代表一个类型java.lang.reflect.Method代表字节码中的方法字节码java.lang.reflect.Constructor代表字节码中的构造方法字节码java.lang.reflect.Field代表字节码中的属性字节获取类字... 查看详情

数组的三种声明方式总结多维数组的遍历arrays类的常用方法总结(代码片段)

1.数组的三种声明方式publicclassWhatEverpublicstaticvoidmain(String[]args)//第一种例:String[]test1=newString[6];test1[0]="数组0";test1[1]="数组1";//第二种例:String[]test2="数组0","数组1","数组2","....";//第三种例:String[]test3=n 查看详情

反射扩展:代理,注解(代码片段)

...射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法对于任意一个对象,都能够访问它的任意一个方法和属性这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制 类中有什么信息,... 查看详情

数组的三种方式总结多维数组的遍历及arrays类的常用方法总结(代码片段)

一.数组的三种方式总结  1.创建数组Java语言使用new操作符来创建数组,语法如下:arrayRefVar=newdataType[arraySize];上面的语法语句做了两件事:一、使用dataType[arraySize]创建了一个数组。二、把新创建的数组的引用赋值给变量ar... 查看详情

spring详解-------依赖注入的三种方式实例详解(代码片段)

目录1、什么是依赖注入1.1类的关系1.1.1依赖关系(Dependency)1.1.2聚合(Aggregation)1.2关系强度2为什么使用依赖注入2.1开闭原则2.1.1定义2.1.2开闭原则优点2.2高内聚,低耦合3依赖注入的方式3.1通过Set方法注入1、... 查看详情

拷贝构造函数调用的三种情况(代码片段)

...的引用。拷贝构造函数的调用有以下三种情形:(1)用类的一个对象去初始化另一个对象时;(2)当函数的形参是类的对象时(值传递),如果是引用传递则不会调用;(3)当函数的返回值是类的对象或引用时。 拷贝构造... 查看详情

java反射机制概述

...态中,对于任意一个类,都能够创建该类对象,调用这个类的所有属性和方法包括构造方法; 2、字节码文件 1)概述: 类加载器负责将.class文件加载到内在中,并为之生成对应的Class对象 2)字节码文件对象的三种获取方式 A... 查看详情

spring之jdbctemplate:查询的三种方式(单个值单个对象对象集合)(代码片段)

JdbcTemplateDemo2.java packagehelloworld.jdbcTemplate;importorg.springframework.jdbc.core.JdbcTemplate;importjava.sql.*;importjava.util.List;/***功能:通过JdbcTemplate实现查询操作*查询结果需要自己封装(实现RowMapper接口)* 查看详情