java跳过构造方法新建对象

Java有四种创建对象的方法:
(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

1.new方法显式调用构造方法;

2.反射方法无论是反射类还是反射构造方法都是通过构造方法构建对象;

3.通过对一个原有对象的复制,是对内存影像的利用

Person person= new Person();
Person  person2= null;
person2= (Person) person.clone();//运用clone()方法产生新对象 

4.是从文件中还原类的对象,也不会调用构造函数。

public class BeanUtil {

        @SuppressWarnings("unchecked")
        public static <T> T cloneTo(T src) throws RuntimeException {
            ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
            ObjectOutputStream out = null;
            ObjectInputStream in = null;
            T dist = null;

            try {
                out = new ObjectOutputStream(memoryBuffer);
                out.writeObject(src);
                out.flush();
                in = new ObjectInputStream(new ByteArrayInputStream(
                        memoryBuffer.toByteArray()));
                dist = (T) in.readObject();

            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                if (out != null)
                    try {
                        out.close();
                        out = null;
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                if (in != null)
                    try {
                        in.close();
                        in = null;
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
            }

            return dist;
        }

        public static void main(String[] args) {
            Person person = new Person();
            Person person2 = cloneTo(person);// 运用反序列生成了一个对象
        }
    }
时间: 2024-10-13 14:00:21

java跳过构造方法新建对象的相关文章

java新建对象的static块与构造器的执行顺序

前言:本文解决的问题 新建一个对象静态代码块什么时候执行 {}里面的代码什么时候执行 有继承关系时的执行顺序 1.问题出现的背景: 构造器是用来实例化一个对象,当我们使用new关键字来新建对象时,构造器就会被调用.如果class中含有静态代码块(static)和普通代码块(在{}括号下),新建对象时的调用顺序是:静态代码块>{里面的代码}>构造器. 2.例子说明: 2.1代码说明 //父类 public class StaticExample{ { System.out.println(&qu

JavaSE入门学习23:Java面向对象之构造方法

学了JavaSE面向对象这一部分,也该对构造方法做一个总结了. 一构造方法 在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法.构造方法负责对象的初始化工作,为 实例变量赋予合适的初始值.构造方法必须满足以下语法规则: (1)方法名必须与类名相同: (2)不要声明返回类型: (3)不能被static.final.synchronized.abstract和native修饰.构造方法不能被子类继承,所以用final和abstract 修饰没有意义.构造方法用于初始化一个新建的对象,所

Java中的类和对象

类和对象 类:类是对对象的抽象,也就是说类是同一类对象的总称,这些对象具有相同的属性和方法. 对象:对象就是一个具体的事物,Java作为面向对象的语言,可以说在Java中万事万物皆对象.对象本身具有自己的属性和方法. 举个生活中的例子:我们生活中常见的人.手机.电脑.车.鸟等等就可以认为是类,然后每一个不同的人就是人这个类的对象,小米6,苹果7就是手机类的不同对象. 知道了什么是类,那么类里面有什么呢? 先来看一下类的定义方法: public class 类名{ 访问修饰符 类型名 属性名 :

Java核心技术之深入理解对象的生命周期

1 总体说明 Java类的初始化 对象的创建与初始化 对象的销毁 对象的复制 2 Java类的初始化 自然界的任何生物都有个由生到死的过程. 而当源代码编译成class文件被JVM的类加载器装载到内存中后,也会经历这么一个由生到死的过程,接下来就分析Java类的初始化到底做了哪些事情.这里暂时不谈JVM将class文件装载到内存的详细细节,只是从类的五种成员来观察类的初始化 之前提到过类的五种成员,包含属性,方法,构造器,代码块以及静态代码块五个部分.其中静态代码块和静态属性(也就是static

Java中的构造方法总结

Java中的构造方法总结 时间: 2013-11-05 08:49 来源: 未知 作者: 站长部落 点击: 1752 次 今天写代码突然发现Java的构造方法也有不少说法呢,闲来无事,总结一下: 构造方法和实例方法的区别: 一.主要的区别在于三个方面:修饰符.返回值.命名 1.和实例方法一样,构造器可以有任何访问的修饰符,public.private.protected或者没有修饰符   ,都可以对构造方法进行修饰.不同于实例方法的是构造方法不能有任何非访问性质的修饰符修饰,例如static.f

java中类的初始化和对象的初始化

静态的属于全局静态区,这个部分独立存在,不管是成员还是块,都是静态的,大家地位相等,先到先得. 然后是成员初始化,这个部分在类的构造函数前初始化,因为编译器(或者设计者)可能认为构造函数调用了这个成员变量,所以在其前初始化了.或者说是成员自己有自己的能力来初始化自己,不用构造函数来管,这部分属于能力比较强的,虽然没有静态的地位高,但是,还是能自给自足的一部分团体. 最后才构造函数,这个时候就开始动工来建立这个类的实例了.这个步骤相当于建大楼,终于开始建立了,前面的准备工作已经准备完了,下面就开始

Java中的变量和对象

1.   栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.2.   栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.另外,栈数据可以共享,详见第3点.堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要在运行时动态分配内存,存取速度较慢.3.   Java

Java虚拟机(二)对象的创建与OOP-Klass模型

相关文章 Java虚拟机系列 前言 在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇文章会给你答案. 1.对象的创建 对象的创建通常是通过new一个对象而已,当虚拟机接收到一个new指令时,它会做如下的操作. (1)判断对象对应的类是否加载.链接.初始化 虚拟机接收到一条new指令时,首先会去检查这个指定的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被类加载

java学习笔记4--类与对象的基本概念(2)

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note4.html,转载请注明源地址. 1.对象初始化和回收 对象初始化 系统在生成对象时,会为对象分配内存空间,并自动调用构造方法对实例变量进行初始化 对象回收 对象不再使用时,系统会调用垃圾回收程序将其占用的内存回收 构造方法 一种和类同名的特殊方法 用来初始化对象 Java中的每个类都有构造方法,用来初始化该类的一个新的对象 没有定义构造方法的类,系统自动提供默认的构造方法 构造方法的