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 ...
随机推荐
- FZU - 2295 Human life (最大权闭合子图)
题目链接 FZU - 2295 Human life 题目分析 题意:你在玩一个游戏,在其中你可以通过学习一些技能,但是学习某些技能之前,可能还要学习一些其他的技能,并且学习任何技能都有一定的花费: ...
- PHP替换HTML文件中所有a标签的HREF属性,其他不变
转载出处:http://www.luanxin.top/index.php/archives/21/ 仿站的时候扒下来的代码a链接总是指向别的地方,要一个一个改的话都要累死了,展示的时候随便点一下就乱 ...
- 值得收藏的Python第三方库
网络站点爬取 爬取网络站点的库Scrapy – 一个快速高级的屏幕爬取及网页采集框架.cola – 一个分布式爬虫框架.Demiurge – 基于PyQuery 的爬虫微型框架.feedparser ...
- python中传统除法、真除法和Floor除法
1.python2.6及其之前,x/y是传统除法,对于整数会省去小数部分,对于浮点数会保持小数部分. 2.python3中x/y表示真除法,无论任何数据类型都会保留小数部分. 3.python2和3中 ...
- WUSTOJ 1237: 将八进制的字符串转换成等价的十进制字符串(Java)
1237: 将八进制的字符串转换成等价的十进制字符串 题目 输入八进制,输出十进制.更多内容点击标题. 分析 输入的八进制数有20位.已经超出了Integer.MAX_VALUE的范围,因此此 ...
- 【数据结构】P1981 表达式求值
题目描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. 输入格式 一行,为需要你计算的表达式,表达式中只包含数字.加法运算符“++”和乘法运算符“×”,且没有括号,所有参与运算的数字 ...
- javascript 垃圾回收机制和内存管理
前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 垃圾回收机制的原理是找到不再被使用的变量,然后释放其占用的内存,但这个过程不是时时的,因为其开销比较大,所 ...
- Docker相关环境全套安装文档兼小技能
Docker相关环境全套安装文档兼小技能 以下环境皆为ubuntu16.04,主要安装docker,docker-compose,docker仓库等. Docker安装 参考官方 A: 有源安装 Ub ...
- (七)easyUI之Accordion折叠面板:普通的静态面板
一.普通的静态面板 前台 <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- 关于安装Chrome插件elasticsearch-head
因为Chrome商店不能使用,安装插件很麻烦. 可以在github上下载elasticsearch-Head插件:https://github.com/mobz/elasticsearch-head/ ...