1、Class 对象是在加载类时由 Java虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的;

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

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

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

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

Class c2 = Person.class;

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

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

3、第三种和前两种的区别

  (1)前两种你必须明确Person类型;

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

4、代码演示

 1 package cn.gzdlh_01_Reflect;
 2
 3 /*  4  * 获取.class字节码文件对象的方式  5  * 1:通过Object类中的getObject()方法  6  * 2: 通过 类名.class 获取到字节码文件对象  7  * 3: 反射中的方法,  8  * public static Class<?> forName(String className) throws ClassNotFoundException  9  * 返回与带有给定字符串名的类或接口相关联的 Class 对象 10 */ 11 public class ReflectDemo { 12 public static void main(String[] args) throws ClassNotFoundException { 13 // 1: 通过Object类中的getObject()方法 14 // Person p1 = new Person(); 15 // Class c1 = p1.getClass(); 16 // System.out.println("c1 = "+ c1); 17 18 // 2: 通过 类名.class 获取到字节码文件对象 19 // Class c2 = Person.class; 20 // System.out.println("c2 = "+ c2); 21 22 // 3: 反射中的方法 23 Class c3 = Class.forName("cn.gzdlh_01_Reflect.Person");// 包名.类名 24 System.out.println("c3 = " + c3); 25  } 26 }

  Person类

 1 package cn.gzdlh_01_Reflect;
 2
 3 public class Person {  4 // 成员变量  5 public String name;  6 public int age;  7 private String address;  8  9 // 构造方法 10 public Person() { 11 System.out.println("空参数构造方法"); 12  } 13 14 public Person(String name) { 15 this.name = name; 16 System.out.println("带有String的构造方法"); 17  } 18 19 // 私有的构造方法 20 private Person(String name, int age) { 21 this.name = name; 22 this.age = age; 23 System.out.println("带有String,int的构造方法"); 24  } 25 26 public Person(String name, int age, String address) { 27 this.name = name; 28 this.age = age; 29 this.address = address; 30 System.out.println("带有String, int, String的构造方法"); 31  } 32 33 // 成员方法 34 // 没有返回值没有参数的方法 35 public void method1() { 36 System.out.println("没有返回值没有参数的方法"); 37  } 38 39 // 没有返回值,有参数的方法 40 public void method2(String name) { 41 System.out.println("没有返回值,有参数的方法 name= " + name); 42  } 43 44 // 有返回值,没有参数 45 public int method3() { 46 System.out.println("有返回值,没有参数的方法"); 47 return 123; 48  } 49 50 // 有返回值,有参数的方法 51 public String method4(String name) { 52 System.out.println("有返回值,有参数的方法"); 53 return "哈哈" + name; 54  } 55 56 // 私有方法 57 private void method5() { 58 System.out.println("私有方法"); 59  } 60 61  @Override 62 public String toString() { 63 return "Person [name=" + name + ", age=" + age + ", address=" + address 64 + "]"; 65  } 66 }

转载于:https://www.cnblogs.com/gzdlh/p/8159200.html

00110_Class类相关推荐

  1. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  4. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  5. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

    在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...

  6. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  7. 利用dom4j将实体类转换为对应的xml报文

    利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...

  8. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

  9. java带参数的方法笔记_具有Java参数的方法的类声明

    类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...

  10. Python 闭包、单个装饰器、多个装饰器、装饰器修饰类、应用场景

    1. 闭包 在 Python 中,函数也可以作为参数.我们可以执行下面的代码: def func(a, b):return a + bprint(func) 我们直接输出函数名,而没有加括号.输出结果 ...

最新文章

  1. 无监督学习之RBM和AutoEncoder
  2. 20211201 (正定矩阵A+正定矩阵B)的最小特征值 ≥ 正定矩阵A的最小特征值+正定矩阵B的最小特征值
  3. SQL语言基础:触发器相关知识介绍​
  4. 友元 java_C++ 友元关系详解
  5. CentOS 如何配置防火墙?
  6. mysql jpa 不要自动建表_jpa无法自动创建数据库表
  7. Linux 学习之路(一)——Linux 发行版本的选择以及opensuse 13.1 安装
  8. 第三空间娱乐体验重构:AITO 问界 M5雕刻的七宝楼台
  9. python如何输入整数求和_Python如何输入数字并求和
  10. PTA 7-5 jmu-java-m05-自定义Judgeable接口 (10 分) JAVA
  11. P34-c++中的代码重用-03多重继承详细介绍
  12. 树状数组————(神奇的区间操作)蒟蒻都可以看懂,因为博主就是个蒟蒻...
  13. unity疯狂牧场完整项目源码 - Frenzy Farming time management game kit V1.0
  14. 解读:基于订单流、技术分析与神经网络的期货短期走势预测模型
  15. Linux-进程控制详解(进程创建+进程终止+进程等待+进程程序替换)
  16. 在win10更新的时候出现0x80240004错误代码怎么解决。
  17. android菜单功能,Android“设置”菜单
  18. Java商品价格竞猜活动
  19. RK3308实现usb webcamera功能
  20. mybatis中POJO的作用

热门文章

  1. 去政府办事,最好事先联系,避免换了地方
  2. 编译opencv错误解决:libavcodec.a(hevc_cabac.o): `ff_h264_cabac_tables' can not be used
  3. 管理感悟:派谁进行技术合作
  4. 下列不属于计算机网络特点的是自主性,计算机网络技术B卷
  5. python中函数的意义_3分钟搞懂Python中dict函数的含义是什么
  6. 数据库事务的四大特性以及事务的隔离级别 1
  7. 二、ReactDOM.render()
  8. VS中Release模式下生成去掉生成pdb文件
  9. 【Unity】6.2 在VS2015中调试 C# 脚本
  10. 关于background与background-image用法