All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.inject.multibindings.ProvidesIntoMap Maven / Gradle / Ivy

package com.google.inject.multibindings;

import com.google.inject.Module;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * Annotates methods of a {@link Module} to add items to a {@link MapBinder}.
 * The method's return type, binding annotation and additional key annotation determines
 * what Map this will contribute to. For example,
 *
 * 
 * {@literal @}ProvidesIntoMap
 * {@literal @}StringMapKey("Foo")
 * {@literal @}Named("plugins")
 * Plugin provideFooUrl(FooManager fm) { returm fm.getPlugin(); }
 *
 * {@literal @}ProvidesIntoMap
 * {@literal @}StringMapKey("Bar")
 * {@literal @}Named("urls")
 * Plugin provideBarUrl(BarManager bm) { return bm.getPlugin(); }
 * 
* * will add two items to the {@code @Named("urls") Map} map. The key 'Foo' * will map to the provideFooUrl method, and the key 'Bar' will map to the provideBarUrl method. * The values are bound as providers and will be evaluated at injection time. * *

Because the key is specified as an annotation, only Strings, Classes, enums, primitive * types and annotation instances are supported as keys. */ @Documented @Target(METHOD) @Retention(RUNTIME) public @interface ProvidesIntoMap { }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy