`
H_eaven
  • 浏览: 32228 次
  • 性别: Icon_minigender_1
  • 来自: 鲨堡
文章分类
社区版块
存档分类
最新评论

关于对象生成的方式

阅读更多
1.使用new关键字生成和不使用new关键字生成对象.
对象生成的方式.
1:new 关键字生成.
Person person = new Man();
这是生成对象最直接的方式.


2:反射方式生成.
使用反射方式生成对象,首先要获得一个Class对象.
获得一个Class对象的方式:
     1:  Class<?> clazz = Class.forName("mypack.Man");
    
     2:           clazz = Thread.currentThread().getContextClassLoader().loadClass("mypack.Man");
                  包括 ClassLoader的其它能够返回Class对象的方法.
     3:           clazz = MyClass.class;
     4:           clazz = object.getClass();
                  这种方式对现再讨论的意义不大,但这也是获得Class对象的一种方式.
得到Class对象之后调用newInstance()方法就可以直接得到一个对象.当然也可以再获得Constructor的一个对象以生成对象.
     Person person = (Person)clazz.newInstance();

3:clone()方法生成.
  对于final类,可以调用构造方法生成clone对象;
  对于非final类,只能调用super.clone(),所调用的方法也只能是final 型的,如果一个用于继承目的类,则clone()应该throws CloneNotSupportedException,以便当其子类不需要clone功能时,可以关闭.
  public Object clone() throws CloneNotSupportedException {
    throw new CloneNotSupportedException();
  }

4:序列化接口使用InputStream做为唯一参数生成对象.
  流方式构造对象.
  自动序列化不太容易看到过程.
  手动序列化则更能看到反序列化的过程.
  private void readObject(ObjectInputStream in) throws IOException,ClassNotFoundException {
      in.defaultReadObject();
      this.name = (String)in.readObject();
      this.age  = in.readInt();
  }
  此时readObject等同一个公有的构造方法.
  实现Serializable的子接口 Externalizable也是一种手动序列化的办法.
  与Serializable不同的是,Serializable完全基于二进制流,Externalizable在反序列化时首先调用公共无参构造方法生成实例,
  然后调用readExternal方法,通过ObjectInputStream读取信息,返回反序列化的对象.
  public void readExternal(ObjectInput in) throws IOException,ClassNotFoundException {
      
  }
分享到:
评论

相关推荐

    SpringBoot+mybatis+MySQL对象生成器

    本项目“SpringBoot+mybatis+MySQL对象生成器”旨在自动化处理数据库表与Java对象之间的映射,提高开发效率。 SpringBoot是由Pivotal团队维护的一个基于Spring框架的启动器,它简化了Spring应用的初始搭建以及开发...

    mybatis实体对象生成(代码生成器).zip

    本压缩包“mybatis实体对象生成(代码生成器).zip”提供了一个工具,能够自动生成MyBatis项目的DAO层、Model层以及Mapper映射文件,极大地提高了开发效率。 首先,我们来看“generatorConfig.xml”文件。这是...

    测试迭代.zip,迭代器、可迭代对象、生成器、生成器表达式的实验代码

    本资源"测试迭代.zip"包含了关于迭代器、可迭代对象、生成器和生成器表达式相关的实验代码,旨在帮助Python学习者深入理解这些核心概念。 1. **可迭代对象**:在Python中,一个对象如果可以被迭代,即它可以依次...

    OD objdictedit CanOpen对象字典生成工具

    CanOpen对象字典生成工具主要用于帮助开发者创建和管理CANopen设备的OD,使得主站和从站节点能够正确通信。 CanOpen是一种广泛应用在嵌入式系统中的实时通信协议,尤其在自动化、汽车电子、机械工程等领域。它基于...

    仿hibernate动态生成sql保存对象

    本文将深入探讨如何模仿Hibernate的功能,动态生成SQL来保存对象,以及与之相关的技术如注解(Annotation)和数据库字段映射。 首先,让我们了解一下Hibernate的核心功能:对象持久化。Hibernate允许开发者将Java...

    com对象源码生成器

    易语言为程序员提供了一种直观的、面向对象的编程方式,使得编程工作更为高效和便捷。 "com对象源码生成器"是一个专为易语言设计的工具,它的主要功能是自动生成COM对象的源代码,帮助开发者快速创建和使用COM组件...

    Thomas Brinkhoff移动对象生成器的修改

    《Thomas Brinkhoff移动对象生成器的改进与深入解析》 Thomas Brinkhoff的移动对象生成器是一款在IT行业中广泛使用的工具,它主要用于创建和管理虚拟环境中的移动实体,如智能车辆、无人机或其他动态物体。这个工具...

    生成树对象及读取操作

    生成树对象的过程涉及创建这些节点并用适当的方式连接它们。例如,如果我们要构建一个二叉搜索树,我们需要确保每个节点的左子树中的所有节点值都小于该节点,右子树中的所有节点值都大于该节点。 对于读取操作,这...

    javaScript 生成DOM 对象(html标签).rar

    生成DOM对象主要有两种方式:一是使用`document.createElement()`方法,二是利用innerHTML属性。`document.createElement()`允许我们创建指定标签名的新元素,例如: ```javascript var newElement = document....

    在反射动态机制生成对象的实体

    ### 在反射动态机制生成对象的实体 #### 概述 反射是Java编程语言的一个核心特性,它允许程序在运行时检查、操作类的信息以及创建对象。通过反射,开发者可以实现高度灵活的应用程序,例如框架、插件系统等,其中...

    java对象生成xml数据

    `JAXBContext`会分析这些类,生成所需的元数据,以便在对象和XML之间进行转换。创建`JAXBContext`的一般方式如下: ```java JAXBContext jaxbContext = JAXBContext.newInstance(MyJavaClass.class); ``` `...

    PHP面向对象程序设计之对象生成方法详解共4页.pdf.z

    二、对象生成:new 关键字 在PHP中,使用`new`关键字可以创建并初始化一个类的对象。`__construct`是类的构造函数,当创建新对象时会自动调用。以上述`Person`类为例,创建一个对象的代码如下: ```php $person = ...

    面向对象程序设计流程图生成器软件

    面向对象程序设计(Object-Oriented Programming,OOP)是...综上所述,面向对象程序设计流程图生成器软件是编程学习和工作中的得力助手,它以图形化的方式增强了代码的可读性和理解性,有助于提升编程效率和代码质量。

    mysql_guid主键生成方式范例

    MySQL中的GUID(Globally Unique Identifier)主键生成方式是一种确保数据库中每一条记录具有唯一标识的方法,尤其在分布式系统中十分常见。本示例主要介绍如何通过Hibernate框架配置,来实现MySQL数据库中GUID主键...

    生成器模式builder

    总的来说,生成器模式提供了一种有效的解决复杂对象构建问题的方法,它允许我们以一种模块化的方式创建对象,提高了代码的可读性和可维护性。通过理解和掌握生成器模式,开发者可以更好地应对各种复杂的对象构造需求...

    Hibernate主键生成方式

    以下是关于Hibernate主键生成方式的详细说明: 1. **Identity方式**:`&lt;generator class="identity"/&gt;` 这种方式依赖于数据库自身的自动增长机制。例如,在MySQL中,它可以与`AUTO_INCREMENT`属性配合使用。当...

    JPublisher生成Oracle对象类型对应的Java对象例子

    通过这种方式,JPublisher极大地简化了Oracle对象类型与Java之间的交互,使得开发者可以在Java应用程序中无缝地使用Oracle的复杂数据结构,提高了开发效率和代码的可读性。在实际开发中,尤其是处理大量Oracle自定义...

    易语言生成快捷方式并自定义图标

    以上就是关于易语言生成快捷方式并自定义图标的基本知识点。通过熟练掌握这些内容,开发者不仅可以实现上述功能,还能在此基础上扩展出更多的应用场景,例如批量生成快捷方式、动态更改图标等。

    关于验证码的生成方式

    本文将探讨两种验证码的生成方式:Servlet和JSP。 首先,我们来了解Servlet生成验证码的方式。Servlet是Java编程语言中用于处理HTTP请求的服务器端组件。在Servlet中生成验证码,通常会涉及到以下几个步骤: 1. **...

    C#面向对象设计模式4:生成器(Builder)

    生成器模式是一种创建型设计模式,它允许我们分步骤构建复杂对象,同时隐藏了对象组装的细节。这种模式的核心思想是将产品的构造过程与产品本身分离,使构造过程可以有不同的表示方式。生成器模式通常由四个主要角色...

Global site tag (gtag.js) - Google Analytics