3、获取Class对象的三种方式
3、获取Class对象的三种方式
要想对字节码文件进行解刨,必须要有字节码文件对象
- Object类中的getClass方法
- 通过对象静态属性 .class来获取对应的Class对象
- 只要通过给定类的字符串名称就可以获取该类,更为拓展
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
3、获取Class对象的三种方式的更多相关文章
- 反射:获取Class对象的三种方式
获取Class对象的三种方式 package lianxiApril18; /** * 获取Class对象的三种方式 * 1 Object ——> getClass(); * 2 任何数据类型( ...
- Java反射获取class对象的三种方式,反射创建对象的两种方式
Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...
- 反射应用和获取Class对象的三种方式
一.写一个"框架",可以创建任何对象运行任何方法 1.配置文件 2.使用类加载器ClassLoader,Properties集合是可以和IO流结合使用完成读取和写入数据的集合,方法 ...
- Java反射获取类对象的三种方式
package demo01; /* * 获取一个类的class文件对象的三种方式 * 1.对象获取 * 2.类名获取 * 3.Class类的静态方法获取 */ public class Reflec ...
- Java反射学习-2 - 获取Class对象的三种方式
package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...
- java webservice服务器端获取request对象的三种方式
有的时候在webservice里我们需要获取request对象和response对象,比如想要获得客户端的访问ip的时候就需要这么做,下面说三种方式,当然三种方式可能是针对不同方式部署webservi ...
- webservice服务器端获取request对象的三种方式
有的时候在webservice里我们需要获取request对象和response对象,比如想要获得客户端的访问ip的时候就需要这么做,下面说三种方式,当然三种方式可能是针对不同方式部署webservi ...
- Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)
反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强 ...
- jdbc 获取connection 对象的三种方式
获取数据库连接方法一:驱动实现类 //创建mysql的Driver对象 Driver driver=new com.mysql.jdbc.Driver(); //jdbc url 定位一个数据库: S ...
随机推荐
- Largest Submatrix 3 CodeForces - 407D (dp,好题)
大意: 给定矩阵, 求选出一个最大矩形, 满足矩形内每个元素互不相同. 考虑枚举上下左三个边界, 求出最大右边界的位置. 注意到固定上边界, 下边界递推时, 每个左边界对应最大右边界是单调不增的. 所 ...
- java 字符串处理的
@Test public void testString(){ /*字符串处理 */ String email="123456789@qq.com"; System.out.pri ...
- RE:ゼロから始める AFO 生活
新建这篇博客的时候发现自己在NOI之后只发过两三篇博客,而且都基本上没什么实质性内容. 果然是巨大混混人啊. 本文承接上篇(不过好像烂尾了),旨在记录一些有趣(?)的内容. 12.23 北大集训过去好 ...
- SQL将同样标识的查询结果查重并用逗号拼接
SELECT B.TaskID , LEFT(SamList, LEN(SamList) - 1) AS ResultListFROM ( SELECT TaskID , ( SELECT Sampl ...
- Reeds-Shepp曲线和Dubins曲线
转载:https://www.cnblogs.com/huyanan/articles/6243694.html 什么是Reeds-Shepp曲线? 想象你下班开车回家,到了小区后想把车停 ...
- leetcode-3 最长无重复字串
3. Longest Substring Without Repeating Characters 题面 Given a string, find the length of the longest ...
- 阿里Java架构师打包 FatJar 方法小结
在函数计算(Aliyun FC)中发布一个 Java 函数,往往需要将函数打包成一个 all-in-one 的 zip 包或者 jar 包.Java 中这种打包 all-in-one 的技术常称之为 ...
- 【异常】airflow-psutil/_psutil_common.c:9:20: fatal error: Python.h: No such file or directory
1 异常信息 usr/include/python3.6m -c psutil/_psutil_common.c -o build/temp.linux-x86_64-3.6/psutil/_psut ...
- linux下无法删除文件的解决办法
1.使用 lsattr 命令查看文件的附加属性.查看文件是否被赋予了 a , i 属性,如果含有这两个属性,文件是不能被删除的. a:让文件或目录仅供附加用途: b:不更新文件或目录的最后存取时间: ...
- 在 java 程序中怎么保证多线程的运行安全?(未完成)
在 java 程序中怎么保证多线程的运行安全?(未完成)