`
249009188
  • 浏览: 45604 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java面试的常见io操作 ~ 深拷贝

io 
阅读更多

 

  java的clone方法实现的是浅拷贝,如果被拷贝的object里面有子object,子object有孙object。。。的话,这些object的内容就消失了。

除非你对每个子/孙的object的clone方法都重载。当然这东西太2b,人类都不这么玩的。

       最简单的实现方式是使用ByteArrayOutputStream和ByteArrayInputStream()来将一个object转换成byte流变换。先将它write到输出流,再重输入流read。实现它内容的拷贝。

 

package com.interview.scoop;

 

 

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.util.Stack;

 

public class DeepClone {

    public static void main(String[] args) {

        Stack<Integer> s = new Stack<Integer>();

        for(int i = 0; i < 3; i++) {

            s.push(i);

        }

        @SuppressWarnings("unchecked")

        Stack<Integer> b = (Stack<Integer>) DeepClone.copy(s);

        int size = b.size();

        for(int i = 0; i < size; i++) {

            System.out.println(b.pop());

        }

    }

    public static Object copy(Object oldObj) {

        Object o = null;

       //Used to carry the output

        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        try {

             // Used to method output

            ObjectOutputStream oos = new ObjectOutputStream(bos);

            // Write object to the container

            oos.writeObject(oldObj);

            // flush is not necessities

            oos.flush();

            oos.close();

            // container, give the object to it, which will be translate to stream

            ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());

           // tool

            ObjectInputStream ois = new ObjectInputStream(bis);

            try {

                // read target and get an object

                o = ois.readObject();

            } catch (ClassNotFoundException e) {

                e.printStackTrace();

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

                return o;

        }

    } 

}

分享到:
评论

相关推荐

    java的各种io操作

    java提供各种IO操作。深入浅出的讲解IO.适合初学者学习

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    java 面试常见问题整理

    泛型 Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 常用的通配符有哪些? 你的项目中哪里用到了泛型? 反射 何为反射?...Java 中 IO 流分为几种? 既然有了字节流,为什么还要有字符流?

    java IO教程,java IO教程,java IO教程

    java IO教程,java IO教程,java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程java IO教程java IO教程java IO教程java IO教程,java IO教程,java IO教程,java IO教程,java IO...

    java的io操作

    该文档主要提供,针对于java的io操作的一些具体事项

    java常见面试题(史上最全最经典-希望对你有用)

    java常见面试题(史上最全最经典-希望对你有用).基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。

    10万字总结java面试题和答案(八股文之一)Java面试题指南

    Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 Spring面试题 Spring Boot面试题 Spring Cloud面试题...

    JAVA教程IO流操作

    JAVA教程 io流操作 JAVA教程 io流操作 JAVA教程 io流操作

    Java面试资料之IO相关

    Java面试资料之IO相关

    Java iO操作全集

    Java iO操作全集 希望对你学习有所帮助。

    java_IO操作

    java_IO操作_(读写、追加、删除、移动、复制等)

    提高Java IO操作的性能

    提高Java IO操作的性能 虽然抱怨Java程序性能不佳的呼声由来已久,但实际上,如果开发者在整个开发周期内都能够关注性能问题,Java程序完全可以和C/C++程序一样快。本文分析了Java IO应用中一些常见的性能问题。

    java IO操作详解.pdf

    java IO操作详细解释 清华大学java io专用教材

    java中的IO操作总结(四)

    java中的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23...

    2022面试题7javaio&kafka-doc文件

    资源描述: 1.2022面试题7javaio&kafka-doc文件 2.资源内容:2022面试题7javaio&kafka背诵版本 3.学习目标:了解2022面试当中的各种套路,避坑上岸 4.特点:简单易懂,容易上手 5.使用说明:需要使用wps打开

    2023java八股文高频面试题

    本资源主要包括Java基础知识、Java集合、多线程、IO操作、网络编程、数据库等方面的面试题目,以及一些实际应用场景下的编程题目。本资源所包含的面试题目丰富多彩,有些题目侧重于Java基础知识的考察,而有些题目则...

    java基础之IO流

    java基础之IO流,基础简介知识,帮助你了解java的io技术

    java常见面试题(史上最全最经典)

    java常见面试题(史上最全最经典-希望对你有用).基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。历年常见面试题型,涵盖...

    IO流 javaio java 流

    IO流 javaio java 流

    JAVA课件Java IO.ppt

    JAVA课件Java IO.ppt详细了解JAVA

Global site tag (gtag.js) - Google Analytics