00110_Class类
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类相关推荐
- 自己搜集编写的Delphi 通用函数
{ ********************************************************************** } { Currency Common Functio ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段
mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...
- IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...
使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...
- IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成
在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...
- javabean实体类与实体类之间的快速转换
一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...
- 利用dom4j将实体类转换为对应的xml报文
利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...
- Idea groovy表生成实体类带注释
Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...
- java带参数的方法笔记_具有Java参数的方法的类声明
类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...
- Python 闭包、单个装饰器、多个装饰器、装饰器修饰类、应用场景
1. 闭包 在 Python 中,函数也可以作为参数.我们可以执行下面的代码: def func(a, b):return a + bprint(func) 我们直接输出函数名,而没有加括号.输出结果 ...
最新文章
- 无监督学习之RBM和AutoEncoder
- 20211201 (正定矩阵A+正定矩阵B)的最小特征值 ≥ 正定矩阵A的最小特征值+正定矩阵B的最小特征值
- SQL语言基础:触发器相关知识介绍​
- 友元 java_C++ 友元关系详解
- CentOS 如何配置防火墙?
- mysql jpa 不要自动建表_jpa无法自动创建数据库表
- Linux 学习之路(一)——Linux 发行版本的选择以及opensuse 13.1 安装
- 第三空间娱乐体验重构:AITO 问界 M5雕刻的七宝楼台
- python如何输入整数求和_Python如何输入数字并求和
- PTA 7-5 jmu-java-m05-自定义Judgeable接口 (10 分) JAVA
- P34-c++中的代码重用-03多重继承详细介绍
- 树状数组————(神奇的区间操作)蒟蒻都可以看懂,因为博主就是个蒟蒻...
- unity疯狂牧场完整项目源码 - Frenzy Farming time management game kit V1.0
- 解读:基于订单流、技术分析与神经网络的期货短期走势预测模型
- Linux-进程控制详解(进程创建+进程终止+进程等待+进程程序替换)
- 在win10更新的时候出现0x80240004错误代码怎么解决。
- android菜单功能,Android“设置”菜单
- Java商品价格竞猜活动
- RK3308实现usb webcamera功能
- mybatis中POJO的作用
热门文章
- 去政府办事,最好事先联系,避免换了地方
- 编译opencv错误解决:libavcodec.a(hevc_cabac.o): `ff_h264_cabac_tables' can not be used
- 管理感悟:派谁进行技术合作
- 下列不属于计算机网络特点的是自主性,计算机网络技术B卷
- python中函数的意义_3分钟搞懂Python中dict函数的含义是什么
- 数据库事务的四大特性以及事务的隔离级别 1
- 二、ReactDOM.render()
- VS中Release模式下生成去掉生成pdb文件
- 【Unity】6.2 在VS2015中调试 C# 脚本
- 关于background与background-image用法