集册 Java实例教程 通过Java序列化创建对象的副本。

通过Java序列化创建对象的副本。

欢马劈雪     最近更新时间:2020-01-02 10:19:05

529
通过Java序列化创建对象的副本。

/*

 * Licensed to the Apache Software Foundation (ASF) under one

 * or more contributor license agreements.  See the NOTICE file

 * distributed with this work for additional information

 * regarding copyright ownership.  The ASF licenses this file

 * to you under the Apache License, Version 2.0 (the

 * "License"); you may not use this file except in compliance

 * with the License.  You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

//package com.nowjava;

/**来自 
 N o w J a v a . c o m - 时  代  Java**/

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;


import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;


public class Main {

    /**

     * Creates a copy of an object via Java Serialization.

     *

     * @param original The original object.

     * @return The copied object.

     */

    public static <T extends java.io.Serializable> T createCopySerializable(
    /** 
     来自 nowjava.com**/

            T original) throws IOException {

        if (original == null) {

            throw new IllegalArgumentException();

        }


        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        ObjectOutputStream oos = new ObjectOutputStream(baos);

        oos.writeObject(original);

        oos.close();

        baos.close();


        ByteArrayInputStream bais = new ByteArrayInputStream(

                baos.toByteArray());


        try (
展开阅读全文