提交 007e2045 编写于 作者: K Kohsuke Kawaguchi

early Guice expriment. No longer needed

上级 8dbdf888
package foo;
/**
* @author Kohsuke Kawaguchi
*/
public interface Animal {
}
package foo;
/**
* @author Kohsuke Kawaguchi
*/
public class Banana implements Cute {
}
package foo;
import com.google.inject.Singleton;
/**
* @author Kohsuke Kawaguchi
*/
public class Cat implements Animal, Cute {
}
package foo;
/**
* @author Kohsuke Kawaguchi
*/
public interface Cute {
}
package foo;
/**
* @author Kohsuke Kawaguchi
*/
public class Dog implements Animal {
}
package foo;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.Scope;
import com.google.inject.Singleton;
import com.google.inject.TypeLiteral;
//import com.google.inject.multibindings.Multibinder;
import java.util.Set;
/**
* @author Kohsuke Kawaguchi
*/
public class Driver {
@Inject
public Set<Animal> animals;
@Inject
public Set<Cute> cute;
/*
If Cat has @Singleton, multiple bindings result in the same instance.
How can I achieve that without changing annotation?
*/
public static void main(String[] args) {
// Injector i = Guice.createInjector(new AbstractModule() {
// @Override
// protected void configure() {
// bind(Cat.class).in(Singleton.class);
//
// Multibinder<Animal> ab = Multibinder.newSetBinder(binder(), Animal.class);
// ab.addBinding().to(Dog.class);
// ab.addBinding().to(Cat.class);
//
// Multibinder<Cute> cb = Multibinder.newSetBinder(binder(), Cute.class);
// cb.addBinding().to(Cat.class);
// cb.addBinding().to(Banana.class);
// }
// });
// i.getInstance(Driver.class).run();
//
// // Dog isn't singleton scoped, so you get a different instance, but Cat is singleton,
// // so you get the same value
// System.out.println(i.getInstance(Key.get(new TypeLiteral<Set<Animal>>(){})));
}
public void run() {
System.out.println(animals);
System.out.println(cute);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册