@BindingAnnotation
发布时间:2020-12-14 04:30:16 所属栏目:大数据 来源:网络整理
导读:(1) 如果 一个接口只有一个实现,使用这种连接注解就可以: bind(XXInterface.class).to(XXImpl.class); @Inject XXInterface xxInterface (2) 当一个接口由多个实现的时候,上面的@Inject根本不知道怎么绑定,这个时候可以使用自定义的绑定注解 BindingAnno
(1) 如果 一个接口只有一个实现,使用这种连接注解就可以: 。
public class AnimalModule extends AbstractModule { @Override protected void configure() { bind(Animal.class).annotatedWith(Cat.class).toInstance(new Animal("Meow")); bind(Animal.class).annotatedWith(Dog.class).toInstance(new Animal("Woof")); } @Provides List<Animal> provideAnimalList(@Cat Animal cat,@Dog Animal dog) { List<Animal> animals = new ArrayList<Animal>(); animals.add(cat); animals.add(dog); return animals; } public static void main(String[] args) { List<Animal> animals = Guice.createInjector(new AnimalModule()).getInstance(Key.get(new TypeLiteral<List<Animal>>() { })); for (Animal animal : animals) { System.out.println(animal); } } } Annotations :? 如下的Cat和Dog是两个绑定注解。 @Retention(value = RetentionPolicy.RUNTIME) @BindingAnnotation public @interface Cat { } @Retention(value = RetentionPolicy.RUNTIME) @BindingAnnotation public @interface Dog { } Output : Animal{sound=‘Meow‘} Animal{sound=‘Woof‘} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |