精华内容
下载资源
问答
  • 三种方式: 对象.getClass() 方法是 Object 方法...所以类.class好比类调用静态方法似得调用字节码对象。 Class.forName()是Class类静态方法。参数是字符串,字符串是类全路径名。 区别: 对象.getCl...

    三种方式:

    1. 对象.getClass() 方法是 Object 的方法。 是其他类继承Object的getClass方法。

    2. 类名.class,你可以理解为字节码本身就是静态的,类加载的时字节码就进JVM了。所以类.class好比类调用静态方法似得调用字节码对象。

    3. Class.forName()是Class类的静态方法。参数是字符串,字符串是类的全路径名。

    区别:

    1. 对象.getClass()必须要有对象,那么必须有对象。所以你得先创建对象。创建这个类对象的前提就是,你能访问到这个类(访问修饰符满足),你建对象的时候必须成功。

    2. 类名.class,那你必须要引用到这个类。(要么该类同包,要么import进来),例如:必须要import java.io.InputStream; 才能 InputStream.class
      当然也可以 java.io.InputStream.class

    以上两种方式,不满足上面说的条件,编译不会通过,直接报错

    1. Class.forName("类的全路径名") ,因为参数是字符串,所以你随便写,都会编译通过。如果全路径写错了,运行才会报错。第三种方式,可以最后才将类全路径名读入,所以常用与反射,类名不确定也不会编译错,就可以根据自己需要随意配置。

    另外,仅有第二种方式:类名.class支持九种类型(八种基本类型+void)

    //原因:九种类型没对象,不支持第一种方式
    //原因:九种类型没有不是类,没路径,没法写全路径名
    

    例如:

    Class  clazz=int.class;    //返回字节码为int
    
    展开全文
  • 三种获取字节码对象的方式及区别

    千次阅读 2013-12-11 22:03:44
    方式一:对象.getClass() 方法是 根对象Object方法...所以类.class好比类调用静态方法似得调用字节码对象方式三:Class.forName()是Class类静态方法。参数是字符串,字符串是类全路径名。 接着上面说。
    方式一:对象.getClass() 方法是 根对象Object的方法。 是其他类继承Object的getClass方法。

    方式二:类名.class,你可以理解为字节码本身就是静态的,类加载的时字节码就进JVM了。所以类.class好比类调用静态方法似得调用字节码对象。
    方式三:Class.forName()是Class类的静态方法。参数是字符串,字符串是类的全路径名。

    接着上面的说。对象.getClass()必须要有对象,那么必须有对象。所以你得先创建对象。创建这个类对象的前提就是,你能访问到这个类(访问修饰符满足),你建对象的时候必须成功。

    类名.class,那你必须要引用到这个类。(要么该类同包,要么import进来),例如:必须要import java.io.InputStream;  才能  InputStream.class
    当然也可以  java.io.InputStream.class

    以上两种方式,不满足上面说的条件,编译不会通过,直接报错。

    而第三种方式 Class.forName("类的全路径名")  ,因为参数是字符串,所以你随便写,都会编译通过。如果全路径写错了,运行才会报错。第三种方式,可以最后才将类全路径名读入,所以常用与反射,类名不确定也不会编译错,就可以根据自己需要随意配置。


    另外,仅有第二种方式:类名.class   还支持九 种类型(八种基本类型+void)//原因:九种类型没对象,不支持第一种方式
                                                                                                                            //原因:九种类型没有不是类,没路径,没法写全路径名
    例如: Class  clazz=int.class;    //返回字节码为int
    展开全文
  • 之前给大家介绍了一下java字节码是什么,那么下面要给大家介绍就是java获取字节码的三种方式,一起来通过下文进行一下详细了解吧!一、java获取字节码的三种方式java源码(xxx.java)在进行了编译之后,形成字节码...

    之前给大家介绍了一下java字节码是什么,那么下面要给大家介绍的就是java获取字节码的三种方式,一起来通过下文进行一下详细的了解吧!

    一、java获取字节码的三种方式

    java源码(xxx.java)在进行了编译之后,形成字节码文件。

    字节码文件通过类加载器获得了字节码对象。

    通过字节码对象能够操作源码当中的属性以及方法。

    下面是具体的三种方式:

    1、第一种方法就是通过对象的getClass方法来实现

    在这当中,getClass()是Object类中的方法。

    所有的对象都能够调用这个方法。java.util.Date str = new java.util.Date();

    Class  clazz3 = str.getClass();

    2、第二种方法就是使用类的class属性来实现Class  clazz1 = java.util.Date.class;

    3、第三种方法就是通过Class类当中的静态方法,传入类的全限定名Class  clazz2 = Class.forName(“java.util.Date”);

    通过类加载器获得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);

    }

    }

    关于获取字节码的三种方式就分享到这里,你还想了解更多关于java字节码方面的内容吗?可以继续关注我们的常见问题栏目来进行了解哦。

    推荐阅读:

    展开全文
  • 1. Object类`Class getClass()`方法- 示例: `Class clazz = student.getClass();`2. `类名.class`属性- 示例: `Class clazz = Student.class;`- 扩展: 实际上`.class`是一种特殊形式, 称为`类字面常量`, class是...

    1. Object类的`Class getClass()`方法

    - 示例: `Class clazz = student.getClass();`

    2. `类名.class`属性

    - 示例: `Class clazz = Student.class;`

    - 扩展: 实际上`.class`是一种特殊形式, 称为`类字面常量`, class是关键字不能作为属性名, 且Object类中并没有定义这个属性

    3. **Class类的静态方法`forName(String className)`**(常用)

    - 示例: `Class clazz = Class.forName("com.test.Student");`

    - 注意: 因为该方法使用字符串来寻找类, 有可能并没有该字符串对应的类, 所以会抛出`ClassNotFoundException`类无法找到的异常

    - 注意:

    - 同一个类的字节码对象只有一个, 地址值是相同的, 无论创建了多少个对象

    - `Class`和`class`区别?

    - Class是一个类, 表示字节码文件的类

    - class是一个关键字, 用于定义一个类

    - 为什么变量名写`clazz`?

    - 因为`class`是用于定义类的关键字, 不能作为变量名, 所以改几个字母, 也可以写成其他变量名`clz`, `cls`等

    代码实现

    ```java

    public class Student {

    private String name;

    private int age;

    public Student() {

    super();

    // TODO Auto-generated constructor stub

    }

    public Student(String name, int age) {

    super();

    this.name = name;

    this.age = age;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public int getAge() {

    return age;

    }

    public void setAge(int age) {

    this.age = age;

    }

    }

    /*

    定义一个Student类

    属性:姓名,年龄

    定义一个测试类

    在测试类中通过三种方式获取Student类的字节码对象,分别为clazz1、clazz2、clazz3,分别比较这三个对象是否相等

    */

    public class Test {

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

    Student student = new Student();

    // 方式1: 对象名.getClass()

    Class class1 = student.getClass();

    // 方式2: 类名.class

    Class class2 = Student.class;

    // 方式3: Class.forName("类的全名")

    Class class3 = Class.forName("com.test.Student");

    System.out.println(class1 == class2); // true

    System.out.println(class1 == class3); // true

    System.out.println(class2 == class3); // true

    // 一个类的字节码对象只有唯一一个, 无论通过什么方式获取

    }

    }

    ```

    一键复制

    编辑

    Web IDE

    原始数据

    按行查看

    历史

    展开全文
  • 获取Class字节码对象的三种方式 1.   三种方法: 1.   Class.forName(“全类名”):将字节码文件加载进内存,返回Class对象 多用于配置文件,将类名定义在配置文件中。读取文件,加载类 2.   类名....
  • java中获取字节码对象的三种方式

    千次阅读 2019-02-18 15:54:38
    package verify; public class ClassObject { public static void main(String[] args) { getClassObjectMethod1(); getClassObjectMethod2(); getClassObjectMethod3... * 方式一 通过对象获得 */ pr...
  • c:这种动态获取的信息以及动态调用对象的方法的功能成为java语言的反射机制。 d:要想解剖一个类,必须先要获取到这个类的字节码文件对象。 e:而解剖使用的就是Class类中的方法,所以要先获取到每一个字节码文件对应...
  • 反射_获取字节码Class对象的三种方式 Class.forName(“全类名”):将字节码文件加载进内存, 返回Class对象 类名.class:通过类名的属性class获取。 对象.getClass():getClass()方法在Object类中定义着。
  • 反射的概述:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法(动态获取的信息);对于任意一个对象,都能够调用它...三种获取字节码文件对应的Class类型的对象的方式要想解剖一个类,...
  • * 任何数据类型都有一个静态属性 .class来获取其对应类的字节码文件对象 * 相对简单,但是还是要明确用到类中静态成员。还是不够扩展! * */ private static void getClassObjectMethod1() { Class...
  • 获取Class对象的三种方式: Class.forName(“全类名”):将字节码文件加载进内存,返回Class对象。 多用于配置文件,将类名定义在配置文件中。...多用于对象的获取字节码的方式 结论 同一个字节码文件...
  • 反射 获取字节码Class对象的三种方式 Class对象功能 constructor就是用来创建对象的,setAccessible在constructor中也适用 使用getDeclared…就需要用到暴力反射
  • 获取字节码文件对象

    2018-03-01 03:30:51
    2、 获取字节码文件对象(class)3、 (Consrtuctor)用字节码对象(class) new一个对象4、 获取和设置字段(Field)对象的值5、获取指定class的函数(Method)并对其调用6、反射实例获取字节码文件对象方式:String ...
  • 文章目录反射获取字节码的三种方式反射获取构造方法并且创建对象通过反射获取成员变量对象 反射获取字节码的三种方式 Class: 对Class文件一种描述 反射: 1.通过Class获取字节码文件对象,使用字节码文件对象来获取...
  • java中反射机制概述、字节码对象的获取方式 反射机制的概述和字节码对象的获取方式 反射介绍 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法 对于任意...
  • java获取字节码对象的三种方式java文件的三个阶段获取字节码class对象的三种方法结论 java文件的三个阶段 1、Source源代码阶段 2、Class类对象阶段,这个阶段会生成一个类型.class的字节码文件,会把所有运行类的...
  • 这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制. 简单来说, 就可以把.class文件比做动物的尸体, 而反射技术就是对尸体的一种解剖. 通过反射技术, 我们可以拿到该字节码文件中所有的...
  • 获取类的字节码对象(Class类型对象)的三种方式 ...2、类名.class:如果已经有了类名,可以通过.class的方式获取这个类的字节码对象。 3、通过Class.forName(String className):Class类中的一个静态方法,可以...
  • 有几种方式获取字节码文件对象? 3种 第一种: xx.class 对象 第二种: Object getClass() 第三种: java类class属性 Class.forName(String className) 指定配置文件 className=com.mysql.jdbc.Driver Object ...
  • 1.写一个Person类,用于测试,如下 ... public class ReflectDemo { public static void main(String[] args) { ... * 获取字节码方式一:通过Object类中getClass()方法 此方式必须要明确具体
  • 反射概述 java反射:在程序运行过程中,可以对任意一个... 如果要获取一个类型各种内容,首先要获取这个类的字节码对象 解剖这个类型,获取类中成员,需要使用Class类型中定义方法 这种【动态】获取信息...
  • 参考学习:... * 获取一个类Class文件对象(字节码文件对象)三种方式 * 1. 对象.getClass() * 2. 类名.class * 3. Class.forName("包名.类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,120
精华内容 448
关键字:

获取字节码对象的方式