`
H_eaven
  • 浏览: 31534 次
  • 性别: 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,发送报文

    自动生成hibernate映射文件和实体类

    如果没有自己勾选一下,下一步,可以设置每张表中 id 增长方式,及生成的映射文件名称。 最后,在 MyEclipse Enterprise 视图下,所有实体类以及配置文件已生成。这便完成了使用 MyEclipse 自动生成 Hibernate 映射...

    动软.Net代码生成器

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

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

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

    mybatis-generator 自动生成代码

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

    JAVA生成PDF报表.pdf

    JAVA生成PDF报表.pdf 在企业的信息系统中,报表处理一直占据着重要的作用。本文将介绍一种生成PDF报表的Java组件--iText。通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表...

    C#动态生成word文档

    C#动态生成word文档 C#动态生成word文档是指使用...使用C#编程生成Word文档需要添加引用Microsoft Word 11.0 Object Library,使用Word.ApplicationClass()和Word.Document对象创建Word文档,并设置文档的样式和内容。

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

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

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

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

    动态生成 TreeView C#

    它由多个 TreeNode 对象组成,每个 TreeNode 对象代表一个节点,包含文本、值、子节点等信息。 动态生成 TreeView 的步骤 动态生成 TreeView 需要以下几个步骤: 1. 获取数据:从数据库或其他数据源获取数据,...

    JSP的九个内置对象及四个作用域

    “Application”对象负责提供应用程序在服务器运行中的一些全局信息,常用的方法有getMimeType和getRealPath等,servlet的循环通过调用getServletConfig().getContext()方法获得,它提供了关于服务器版本,应用级...

    好用的代码生成源码

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

    java面向对象程序设计第二版源代码

    Java 中的生成器模式(Builder Pattern)是一种创建型设计模式,它使得客户端可以通过一步一步的方式来生成对象,而不需要关心对象的构建过程。生成器模式的优点是它可以使得客户端可以更方便地生成对象,而不需要...

    单片机代码自动生成工具

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

Global site tag (gtag.js) - Google Analytics