zoukankan      html  css  js  c++  java
  • 3、获取Class对象的三种方式

    3、获取Class对象的三种方式

    要想对字节码文件进行解刨,必须要有字节码文件对象

    1. Object类中的getClass方法
    2. 通过对象静态属性 .class来获取对应的Class对象
    3. 只要通过给定类的字符串名称就可以获取该类,更为拓展

    3.1 方式一:Object类中的getClass()方法

    3.1.1 创建Person类

    必须要明确具体的类,并且要创建对象,麻烦。

    package com.hw.bean;
    
    /**
     * @Description
     * @Author Administrator
     * @Date 2018/11/29
     */
    public class Person {
    
        private String name;
        private int age;
    
    
        public void show() {
            System.out.println(name + "... show run ..." + age);
        }
    
        private void privateMethod() {
            System.out.println("privateMethod run...");
        }
    
        public void paramMethod(String str, int num) {
            System.out.println("paramMethod run..." + str + ": " + num);
        }
    
        public static void staticMethod() {
            System.out.println("staticMethod run ... ");
        }
    
    
        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;
        }
    
        public Person() {
            super();
            System.out.println("person run ...");
        }
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
            System.out.println("person param run ... name=" + name);
        }
    }
    
    
    3.1.2 测试用例
    /**
     * 获取Class对象的三种方式
     * 1.Object类中的getClass()方法,必须要明确具体的类,并且要创建对象,麻烦。
     */
    @Test
    public void getClassObject_1() {
        Person person = new Person();
        Class clazz = person.getClass();
    
        Person person1 = new Person();
        Class clazz1 = person1.getClass();
    
        System.out.println(clazz == clazz1);
    }
    
    

    运行:

    3.2 方式二:通过对象静态属性 .class来获取对应的Class对象

    相对简单,但是还是需要先明确类中的静态成员。不够拓展。

    /**
         * 通过对象静态属性 .class来获取对应的Class对象
         */
        public void getClassObject_2() {
            Class clazz = Person.class;
        }
    

    3.3 方式三:只要通过给定类的字符串名称就可以获取该类,更为拓展,forName

    /**
     * 方式三:只要通过给定类的字符串名称就可以获取该类,更为拓展,forName
     */
    @Test
    public void getClassObject_3() throws ClassNotFoundException {
        String className = "com.hw.bean.Person";
        Class clazz = Class.forName(className);
        System.out.println(clazz);
    }
    

    运行:


    本章节源码: ReflectDemo

  • 相关阅读:
    货币转换函数:CURRENCY_CONVERTING_FACTOR
    Function程序设计及应用
    工具栏对象GUI Status 与GUI Title
    Message的定义類型
    Report List 报表开发
    SpringMVC构建Restful。
    Redis主从复制
    转:Redis配置文件详解
    Redis入门学习
    Redis开启远程登录连接。
  • 原文地址:https://www.cnblogs.com/Grand-Jon/p/10041859.html
Copyright © 2011-2022 走看看