zoukankan      html  css  js  c++  java
  • 设计模式课程 设计模式精讲 9-4 原型模式源码解析

    1    源码解析

    1.1  源码解析1(java.lang.Object对象)

    1.2  源码解析2(ArrayList实现克隆)

    1.3  源码解析3(mybaties 的cacheKey)

    1    源码解析
    1.1  源码解析1(java.lang.Object对象)
    //native 调用非java代码接口 
    protected native Object clone() throws CloneNotSupportedException;
    1.2  源码解析2(ArrayList实现克隆)
    public class ArrayList<E> extends AbstractList<E>
            implements List<E>, RandomAccess, Cloneable, java.io.Serializable{
    
    /**
         * Returns a shallow copy of this <tt>ArrayList</tt> instance.  (The
         * elements themselves are not copied.)
         *
         * @return a clone of this <tt>ArrayList</tt> instance
         */
        public Object clone() {
            try {
                @SuppressWarnings("unchecked")
                    ArrayList<E> v = (ArrayList<E>) super.clone();
                v.elementData = Arrays.copyOf(elementData, size);
                v.modCount = 0;
                return v;
            } catch (CloneNotSupportedException e) {
                // this shouldn't happen, since we are Cloneable
                throw new InternalError();
            }
        }
    
    }
    1.3  源码解析3(mybaties 的cacheKey)
    /**
     *    Copyright 2009-2016 the original author or authors.
     *
     *    Licensed 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 org.apache.ibatis.cache;
    
    import java.io.Serializable;
    import java.lang.reflect.Array;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author Clinton Begin
     */
    public class CacheKey implements Cloneable, Serializable {
     
    @Override
    public CacheKey clone() throws CloneNotSupportedException { CacheKey clonedCacheKey = (CacheKey) super.clone(); clonedCacheKey.updateList = new ArrayList<Object>(updateList); return clonedCacheKey; } }

     

  • 相关阅读:
    sscanf()
    分享:Python字符编码详解
    STL priority_queue使用
    google maps 控件controller
    Google Maps Overlays叠加层
    java JDBC配置和使用
    转:总结java的interface和abstract class
    java 多线程 之 生产者和消费者
    一个简单的marker和infowindow
    java Nested Classes
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/11470784.html
Copyright © 2011-2022 走看看