`
H_eaven
  • 浏览: 31382 次
  • 性别: 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 {
      
  }
分享到:
评论

相关推荐

    易语言生成FLASH对象源码

    易语言生成FLASH对象源码、使用对象方式制作自己的FLASH文件并且生成

    Java WebService 简单实例 方式一(生成类文件方式)

    Java WebService 简单实例 方式一(生成类文件方式)

    hibernate@注解方式配置实体类,调用javadoc接口生成数据库表及字段的注释说明

    hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...

    基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)

    10、优化JSON参数配置,可以同时使用表命名方式和驼峰命名方式填写参数,前端可以直接复制Swagger上的实体名和属 性名配置上去生成代码,无需关注数据库表和字段 11、生成自定义文件移除项目名、文件后缀名、文件名...

    代码生成器Mgicode生成器JAVA代码生成器

    此时,我们就需要采用另外一种方式,把它们抽象出来更高层级的模板,然后把不同数据传入该模板的占位符,这样就变成不同的代码,这种方式就是代码生成技术。 在软件的设计过程中,代码生成及重用设计仿若陌路人,...

    C# 方式生成xml格式字符串

    生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言

    java 通过模板生成 xml,发送报文

    java 通过模板生成 xml,发送报文

    动软.Net代码生成器

    动软.Net代码生成器Codematic是一款为C#数据库程序员设计的自动代码生成器,Codematic生成的代码基于面向对象的思想和三层架构设计,可以直接生成三层架构的项目的代码,使程序员可以节省大量机械录入的时间和重复...

    mybatis-generate连接oracle生成带注释和小写的实体类

    mybatis-generate连接oracle生成带注释和小写的实体类

    mybatis-generator 自动生成代码

    它可以帮助我们根据数据库中表的设计生成对应的实体类,xml Mapper文件,接口以及帮助类(也就是我们可以借助该类来进行简单的CRUD操作),这样就...下面我主要介绍基于Maven和普通的Java工程两种方式来生成相应的文件

    面向对象实验一——纸牌游戏

    面向对象的实验一,使用java语言,利用面向对象技术,模拟windows小游戏纸牌,附实验报告。

    javascript使用Blob对象实现的下载文件操作示例

    最近在做以post请求方式导出excel时,想到了可以使用Blob对象将后台返回的输出流以arraybuffer或blob的格式接收交给Blob处理,最后使用URL生成链接,供浏览器下载excel。 环境 vue2.x webpack3.x axi

    好用的代码生成源码

    一个不怎么智能,半手工方式的,但最适合实际开发的java代码生成器 核心理念: 为你生成一切,再根据所需手工copy回来工作区 用最精简的代码完成最核心的功能 特性 基于FreeMarker模板语言,并且模板易于修改 基于...

    单片机代码自动生成工具

    单片机代码自动生成工具是针对STM32单片机学习成本高、底层代码设计重复繁琐、移植和使用不方便、以及Keil5开发收费等问题而开发,通过代码自动生成技术根据用户需求完成单片机底层代码的自动生成,并提供了一些常用...

    SQL脚本生成器

    2、正向方式:首先把设计好数据库表文档,把所有表的字段属性配置到EXCEL或者CSV格式的文件通过JXL/POI技术去读取文件的字段,再通过其他技术一系列程序处理之后生成所需要的SQL脚本。 3、逆向方式:首先有数据库...

    类的静态数据成员-用来统计对象存在的个数 引用静态数据成员的方式对结果没有影响

    类的静态数据成员-用来统计对象存在的个数 引用静态数据成员(通过类本身或者通过类对象)的方式对结果没有影响,都等于创建的对象的个数

    基于Simulink模型的嵌入式代码生成技术

    自动生成代码技术具有生成的代码效率高、一致性好、开发便捷等诸多优点,也正是因为这些优点使得这项技术已经成为汽车、航空航天、工业控制等领域嵌入式软件开发的主流方式。本次研讨会将主要讨论如何通过...

    基于模板的代码生成器LKGenerator1.1.0_x86

    ${bean.datasLength} = ${bean.datasSize}bean中读取数据表中的内容并转为类的对象,模板中可以使用. #foreach($data in ${bean.datas}) ${data.uuid},${data.name}... #end 2.从实体类生成代码 前置条件:步骤1中...

    C#.Net实体代码生成工具 v3.0

    C#.Net实体代码生成工具(EntitysCodeGenerate)是一款专门为 C#.Net 数据库程序员开发量身定做的自动代码生成工具,所生成的代码基于面向对象的思想和分层架构设计,并参考了微软Petshop中经典的思想和设计模式,融入...

    openjpa实体标识的生成策略

    JPA 充分利用了注释(Annotation)和对象/关系映射,为数据持久化提供了更简单、易用的编程方式。OpenJPA 是 Apache 组织提供的 JPA 标准实现。本文是 使用 Apache OpenJPA 开发 EJB 3.0 应用系列 的第五部分,介绍...

Global site tag (gtag.js) - Google Analytics