Class类

阅读API的Class类得知,Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的

获取Class对象的三种方式

方式一: 通过Object类中的getObject()方法

Person p = new Person();
Class c = p.getClass();

方式二: 通过 类名.class 获取到字节码文件对象(任意数据类型都具备一个class静态属性,看上去要比第一种方式简单)。

Class c2 = Person.class;

方式三: 通过Class类中的方法(将类名作为字符串传递给Class类中的静态方法forName即可)。

Class c3 = Class.forName("Person");

注意:第三种和前两种的区别

前两种你必须明确Person类型.

后面是指定这种类型的字符串就行.这种扩展更强.我不需要知道你的类.我只提供字符串,按照配置文件加载就可以了

代码演示

package cn.learn.demo1;
/**  获取一个类的class文件对象的三种方式*   1. 对象获取*   2. 类名获取*   3. Class类的静态方法获取*/
public class ReflectDemo {public static void main(String[] args)throws ClassNotFoundException {//1. 对象获取Person p = new Person();//调用Person类的父类的方法 getClassClass c = p.getClass();System.out.println(c);//2. 类名获取//每个类型,包括基本和引用,都会赋予这个类型一个静态的属性,属性名字classClass c1 = Person.class;System.out.println(c1);//3. Class类的静态方法获取 forName(字符串的类名)包名.类名Class c2 = Class.forName("cn.learn.demo1.Person");System.out.println(c2);}
}

Person类

package cn.learn.demo1;public class Person {public String name;private int age;/*static{System.out.println("静态代码块");}*/public Person(){}public Person(String name,int age){this.name = name;this.age = age;}private Person(int age,String name){this.name = name;this.age = age;}public void eat(){System.out.println("人吃饭");}public void sleep(String s, int a,double d){System.out.println("人在睡觉"+s+"....."+a+"....."+d);}private void playGame(){System.out.println("人在打游戏");}public String toString() {return "Person [name=" + name + ", 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;}}

获取class文件对象三种方式相关推荐

  1. 创建文件的三种方式和一些操作方法

    package IO;import org.junit.jupiter.api.Test; import java.io.File; import java.io.IOException;/*** @ ...

  2. JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  3. java oom dump_JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式

    JVM 在遇到OOM(OutOfMemoryError)时生成Dump文件的三种方式,以及如何使用Eclips Memory Analyzer(MAT)插件进行堆内存分析. 方法一: jmap -du ...

  4. django文件上传到服务器,django上传文件的三种方式

    Django文件上传需要考虑的重要事项 文件或图片一般通过表单进行.用户在前端点击文件上传,然后以POST方式将数据和文件提交到服务器.服务器在接收到POST请求后需要将其存储在服务器上的某个地方.D ...

  5. Python处理mat文件的三种方式小结

    文章目录 处理mat文件的三种方式 scipy h5py mat73 python操作.mat文件 python读取.mat格式 mat转图片 处理mat文件的三种方式 读书的时候,处理数据都是采用m ...

  6. windows和虚拟机互传文件的三种方式

    大家好,在平时学习工作的时候可能有这样的需求:要将windows中的文件传到虚拟机中或者将虚拟机的文件传到windows,大家都是怎么实现的呢? 今天给大家介绍下windows和虚拟机互传文件的三种方 ...

  7. JS基础-Java Class类以及获取Class实例的三种方式

    JS基础-Java Class类以及获取Class实例的三种方式 由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名.包名.父类.实现的接口. ...

  8. ubuntu创建文件的三种方式

    ubuntu下创建文件的三种方式 1.touch命令:touch 文件名.后缀 在当前工作目录底下新建一个文件,如 touch velocity_publisher.cpp 2.gedit命令:ged ...

  9. Struts2-从值栈获取list集合数据(三种方式)

    创建User封装数据类 public class User {private String username;private String password;public String getPass ...

最新文章

  1. 基于时间片轮转程序分析进程调度
  2. 这个网站绝了,收录近600条Linux系统命令
  3. php怎样解析数组,PHP 数组 Array 解析
  4. linux替换文件内容cat,Linux下巧用cat与EOF实现文件的替换和追加
  5. php用正则_php 正则表达式匹配(持续更新)
  6. ABAP 740里的新语法 - LET表达式
  7. Caused by: Parent package is not defined: json-default - [unknown location]
  8. 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)
  9. 深度学习图像标注工具
  10. 网络爬虫(2)--异常处理
  11. 计算机考试发送邮件教程,电脑考试怎么发邮件
  12. 计算机vfp实验小结,vfp实验1报告心得体会
  13. Java分页详细步骤
  14. java实现车牌头像识别_LPR java车牌图像处理 输入一个车牌照片(不是整车的照片) - 下载 - 搜珍网...
  15. Quest2有线串联steamVR
  16. 基于MATLAB的机器人学、机器视觉与控制
  17. SVN: can't open file‘\db\txn-current-lock’ 拒绝访问
  18. 什么是Linux 的xxd
  19. 20172323 2017-2018-2 《程序设计与数据结构》第九周学习总结
  20. jdk1.7升级jdk1.8

热门文章

  1. Java多线程之实现多线程的三种方法
  2. javascript构造函数继承
  3. windows ffmpeg 的安装
  4. ajax 的同步和异步
  5. IIS 不能重新启动,并且使用RUN-iisreset 也不能运行,错误提示:No Such Interface Supported (已解决)...
  6. ORA-01810: 格式代码出现两次
  7. 判断一个字符串是否为数字
  8. 新手使用vue-router传参时注意事项
  9. PHP-CPP开发扩展(五)
  10. Watson使用指南(三)