1 /* Copyright (c) 2008 Sascha Kohlmann
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU Affero General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Affero General Public License for more details.
12 *
13 * You should have received a copy of the GNU Affero General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16 package net.sf.eos;
17
18 /**
19 * Instances supply objects of a single type.
20 *
21 * <p><strong>Note:</strong> experimental - inspired by <em>guice</em></p>
22 *
23 * @author Sascha Kohlmann
24 * @since 0.1.0
25 * @param <T> the provided type
26 */
27 @Experimental
28 public interface Supplier<T> {
29
30 /**
31 * Returns an instance of the expected type. The returned type may or
32 * may not be a new instance, depending on the implementation.
33 * @return an instance of the expected type
34 */
35 public T get();
36 }