Sha256: e60b0f39db5929a3a4ee3490190ae6a978df90f1762bbf17be66d64bd384097f

Contents?: true

Size: 1.4 KB

Versions: 119

Compression:

Stored size: 1.4 KB

Contents

/*
 * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
 * Copyright (C) 2005 - Javolution (http://javolution.org/)
 * All rights reserved.
 * 
 * Permission to use, copy, modify, and distribute this software is
 * freely granted, provided that this notice is preserved.
 */
package javolution.lang;

/**
 * <p> This interface identifies classes whose instances are not subject or 
 *     susceptible to change or variation after creation. Once a class is 
 *     declared immutable, any subclass must ensure immutability as well.</p>
 *     
 * <p> {@link Immutable} objects can safely be used in a multi-threaded 
 *     environment and <b>do not require defensive copying</b>.
 *     For example:[code]
 *     class Polygon implements Immutable {
 *          private List<Point2D> _vertices;
 *          public Polygon(List<Point2D> vertices) {
 *              _vertices = (vertices instanceof Immutable) ?
 *                   vertices : // Safe, the vertices cannot be modified by the client.
 *                   new FastTable<Point2D>(vertices); // Defensive copying required.
 *          }
 *     }[/code]</p>
 * @see <a href="http://en.wikipedia.org/wiki/Immutable_object">
 *      Wikipedia: Immutable Object<a>    
 * 
 * @author  <a href="mailto:jean-marie@dautelle.com">Jean-Marie Dautelle</a>
 * @version 3.7, February 6, 2006
 */
public interface Immutable {

    // No method (tagging interface).
    
}

Version data entries

119 entries across 119 versions & 1 rubygems

Version Path
rhodes-3.5.1.12 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.5 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.4.2 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.4 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.3 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.3.beta.4 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.3.beta.3 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.3.beta.2 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.3.beta.1 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2.beta.7 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2.beta.6 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2.beta.5 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2.beta.4 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2.beta.3 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2.beta.2 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.2.beta.1 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.1 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.0 platform/bb/RubyVM/src/javolution/lang/Immutable.java
rhodes-3.3.0.beta.3 platform/bb/RubyVM/src/javolution/lang/Immutable.java