com.github.fge.Frozen Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of btf Show documentation
Show all versions of btf Show documentation
Generic interfaces to the classical builder pattern and the less classical "freeze/thaw" pattern
The newest version!
/*
* Copyright (c) 2014, Francis Galiegue ([email protected])
*
* This software is dual-licensed under:
*
* - the Lesser General Public License (LGPL) version 3.0 or, at your option, any
* later version;
* - the Apache Software License (ASL) version 2.0.
*
* The text of this file and of both licenses is available at the root of this
* project or, if you have the jar distribution, in directory META-INF/, under
* the names LGPL-3.0.txt and ASL-2.0.txt respectively.
*
* Direct link to the sources:
*
* - LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt
* - ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package com.github.fge;
import javax.annotation.concurrent.Immutable;
/**
* Interface for a frozen object
*
* This interface is closely coupled with {@link Thawed}. The principle is
* simple: you can obtain a thawed object from a frozen one, and a thawed object
* can generate a frozen one.
*
* By contract, implementations of this interface must be immutable.
*
* @param the type of the thawed counterpart
*/
@Immutable
public interface Frozen>>
{
/**
* Return a thawed representation of this frozen object.
*
* @return a thawed object
*/
T thaw();
}