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 }