热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过Class类获取对象实例

通过Class对象获取对象的方式是通过class.newInstance()方式获取,通过调用默认构造参数实例化一个对象。1**2*Createdbyhunton201762

通过Class对象获取对象的方式是通过class.newInstance()方式获取,通过调用默认构造参数实例化一个对象。

 1 /**
2 * Created by hunt on 2017/6/27.
3 * 测试的实体类
4 * @Data 编译后会自动生成set、get、无惨构造、equals、canEqual、hashCode、toString方法
5 */
6 @Data
7 public class Person {
8 private String name;
9 private int age;
10 }

 

 1 /**
2 * Created by hunt on 2017/6/27.
3 */
4 public class NewInstanceTest {
5 public static void main(String[] args) {
6 Class persOnClass= Person.class;//获取Class实例
7 try {
8 Person p = personClass.newInstance();//通过Class获得Person实例
9 p.setAge(28);
10 p.setName("hunt");
11 System.out.println(p);
12 } catch (InstantiationException e) {
13 e.printStackTrace();
14 } catch (IllegalAccessException e) {
15 e.printStackTrace();
16 }
17 }
18 }

提示:class.newInstance()是通过无参构造函数实例化的,一个对象默认是有一个无参构造函数,如果有一个有参构造函数,无参构造函数就不存在了,在通过反射获得对象会抛出 java.lang.InstantiationException 异常。

 1 /**
2 * Created by hunt on 2017/6/27.
3 * 测试的实体类
4 */
5
6 public class Person {
7 private String name;
8 private int age;
9
10 public String getName() {
11 return name;
12 }
13
14 public int getAge() {
15 return age;
16 }
17
18 public void setName(String name) {
19 this.name = name;
20 }
21
22 public void setAge(int age) {
23 this.age = age;
24 }
25
26 public Person(String name,int age){}//有参数构造函数
27 }
 1 /**
2 * Created by hunt on 2017/6/27.
3 */
4 public class NewInstanceTest {
5 public static void main(String[] args) {
6 Class persOnClass= Person.class;//获取Class实例
7 try {
8 Person p = personClass.newInstance();//通过Class获得Person实例
9 p.setAge(28);
10 p.setName("hunt");
11 System.out.println(p.getAge()+"----"+p.getName());
12 } catch (InstantiationException e) {
13 e.printStackTrace();
14 } catch (IllegalAccessException e) {
15 e.printStackTrace();
16 }
17 }
18 }

总结:以后创建实体类的时候一定要带上无参构造函数,以便以后使用反射的时候实例化对象不抛出异常。

 


推荐阅读
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 不确定性|放入_华为机试题 HJ9提取不重复的整数
    不确定性|放入_华为机试题 HJ9提取不重复的整数 ... [详细]
  • 异常要理解Java异常处理是如何工作的,需要掌握一下三种异常类型:检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常ÿ ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 在软件开发过程中,MD5加密是一种常见的数据保护手段。本文将详细介绍如何在C#中使用两种不同的方式来实现MD5加密:字符串加密和流加密。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 深入理解Java字符串池机制
    本文详细解析了Java中的字符串池(String Pool)机制,探讨其工作原理、实现方式及其对性能的影响。通过具体的代码示例和分析,帮助读者更好地理解和应用这一重要特性。 ... [详细]
  • Java 中的月减()方法 ... [详细]
author-avatar
你好2502898737
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有