Use Guice to create core classes
[rhynodge.git] / src / main / java / net / pterodactylus / util / inject / ObjectBinding.java
1 package net.pterodactylus.util.inject;
2
3 import com.google.inject.Module;
4
5 /**
6  * Helper class for Guice configuration.
7  *
8  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
9  */
10 public class ObjectBinding {
11
12         public static <T> $1<T> forClass(Class<T> requestedClass) {
13                 return new $1<>(requestedClass);
14         }
15
16         public static class $1<T> {
17
18                 private final Class<T> requestedClass;
19
20                 private $1(Class<T> requestedClass) {
21                         this.requestedClass = requestedClass;
22                 }
23
24                 public Module is(T instance) {
25                         return (binder) -> binder.bind(requestedClass).toInstance(instance);
26                 }
27
28         }
29
30 }