e1350c63821b13bd8b93c0b6342bfe7e3fb52bb0
[jFCPlib.git] / src / net / pterodactylus / util / thread / ObjectWrapper.java
1 /*
2  * jFCPlib - UserObject.java -
3  * Copyright © 2009 David Roden
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18  */
19
20 package net.pterodactylus.util.thread;
21
22 /**
23  * Wrapper around an object that can be set and retrieved. Its primary use is as
24  * a container for return values from anonymous classes.
25  *
26  * <pre>
27  * final ObjectWrapper&lt;Object&gt; objectWrapper = new ObjectWrapper&lt;Object&gt;();
28  * new Runnable() {
29  *     public void run() {
30  *         ...
31  *         objectWrapper.set(someResult);
32  *     }
33  * }.run();
34  * Object result = objectWrapper.get();
35  * </pre>
36  *
37  * @param <T>
38  *            The type of the wrapped object
39  * @author David ‘Bombe’ Roden &lt;bombe@pterodactylus.net&gt;
40  */
41 public class ObjectWrapper<T> {
42
43         /** The wrapped object. */
44         private volatile T wrappedObject;
45
46         /**
47          * Returns the wrapped object.
48          *
49          * @return The wrapped object
50          */
51         public T get() {
52                 return wrappedObject;
53         }
54
55         /**
56          * Sets the wrapped object.
57          *
58          * @param wrappedObject
59          *            The wrapped object
60          */
61         public void set(T wrappedObject) {
62                 this.wrappedObject = wrappedObject;
63         }
64
65 }