blob: c478afe9ac71492ecb8b296be01facc058949477 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.ico" />
<title>
Multibinder
| Guice
</title>
<link href="../../../../../javadoc/assets/android-developer-docs.css" rel="stylesheet" type="text/css" />
<link href="../../../../../javadoc/assets/customizations.css" rel="stylesheet" type="text/css" />
<script src="../../../../../javadoc/assets/search_autocomplete.js" type="text/javascript"></script>
<script src="../../../../../javadoc/assets/jquery-resizable.min.js" type="text/javascript"></script>
<script src="../../../../../javadoc/assets/android-developer-docs.js" type="text/javascript"></script>
<script src="../../../../../javadoc/assets/prettify.js" type="text/javascript"></script>
<script type="text/javascript">
setToRoot("../../../../", "../../../../../javadoc/assets/");
</script>
<script src="../../../../../javadoc/assets/android-developer-reference.js" type="text/javascript"></script>
<script src="../../../../../javadoc/assets/navtree_data.js" type="text/javascript"></script>
<script src="../../../../../javadoc/assets/customizations.js" type="text/javascript"></script>
<noscript>
<style type="text/css">
html,body{overflow:auto;}
#body-content{position:relative; top:0;}
#doc-content{overflow:visible;border-left:3px solid #666;}
#side-nav{padding:0;}
#side-nav .toggle-list ul {display:block;}
#resize-packages-nav{border-bottom:3px solid #666;}
</style>
</noscript>
</head>
<body class="Guice_2.0">
<div id="header">
<div id="headerLeft">
<span id="masthead-title">Guice</span>
</div>
<div id="headerRight">
<div id="search" >
<div id="searchForm">
<form accept-charset="utf-8" class="gsc-search-box"
onsubmit="return submit_search()">
<table class="gsc-search-box" cellpadding="0" cellspacing="0"><tbody>
<tr>
<td class="gsc-input">
<input id="search_autocomplete" class="gsc-input" type="text" size="33" autocomplete="off"
title="search developer docs" name="q"
value="search developer docs"
onFocus="search_focus_changed(this, true)"
onBlur="search_focus_changed(this, false)"
onkeydown="return search_changed(event, true, '../../../../')"
onkeyup="return search_changed(event, false, '../../../../')" />
<div id="search_filtered_div" class="no-display">
<table id="search_filtered" cellspacing=0>
</table>
</div>
</td>
<td class="gsc-search-button">
<input type="submit" value="Search" title="search" id="search-button" class="gsc-search-button" />
</td>
<td class="gsc-clear-button">
<div title="clear results" class="gsc-clear-button">&nbsp;</div>
</td>
</tr></tbody>
</table>
</form>
</div><!-- searchForm -->
</div><!-- search -->
<div id="api-level-toggle">
<input type="checkbox" id="apiLevelCheckbox" onclick="toggleApiLevelSelector(this)" />
<label for="apiLevelCheckbox" class="disabled">Filter by API Level: </label>
<select id="apiLevelSelector">
<!-- option elements added by buildApiLevelSelector() -->
</select>
</div>
<script>
var SINCE_DATA = [ 'Guice_1.0', 'Guice_2.0', 'Guice_3.0' ];
var SINCE_LABELS = [ 'Guice_1.0', 'Guice_2.0', 'Guice_3.0' ];
buildApiLevelSelector();
addLoadEvent(changeApiLevel);
</script>
</div>
</div><!-- header -->
<div class="g-section g-tpl-240" id="body-content">
<div class="g-unit g-first side-nav-resizable" id="side-nav">
<div id="swapper">
<div id="nav-panels">
<div id="resize-packages-nav">
<div id="packages-nav">
<div id="index-links"><nobr>
<a href="../../../../packages.html" >Package Index</a> |
<a href="../../../../classes.html" >Class Index</a></nobr>
</div>
<ul>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/package-summary.html">com.google.inject</a></li>
<li class="api apilevel-Guice_2.0">
<a href="../../../../com/google/inject/assistedinject/package-summary.html">com.google.inject.assistedinject</a></li>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/binder/package-summary.html">com.google.inject.binder</a></li>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/jndi/package-summary.html">com.google.inject.jndi</a></li>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/matcher/package-summary.html">com.google.inject.matcher</a></li>
<li class="selected api apilevel-Guice_2.0">
<a href="../../../../com/google/inject/multibindings/package-summary.html">com.google.inject.multibindings</a></li>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/name/package-summary.html">com.google.inject.name</a></li>
<li class="api apilevel-Guice_3.0">
<a href="../../../../com/google/inject/persist/package-summary.html">com.google.inject.persist</a></li>
<li class="api apilevel-Guice_3.0">
<a href="../../../../com/google/inject/persist/finder/package-summary.html">com.google.inject.persist.finder</a></li>
<li class="api apilevel-Guice_3.0">
<a href="../../../../com/google/inject/persist/jpa/package-summary.html">com.google.inject.persist.jpa</a></li>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/servlet/package-summary.html">com.google.inject.servlet</a></li>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/spi/package-summary.html">com.google.inject.spi</a></li>
<li class="api apilevel-Guice_2.0">
<a href="../../../../com/google/inject/spring/package-summary.html">com.google.inject.spring</a></li>
<li class="api apilevel-Guice_2.0">
<a href="../../../../com/google/inject/throwingproviders/package-summary.html">com.google.inject.throwingproviders</a></li>
<li class="api apilevel-Guice_1.0">
<a href="../../../../com/google/inject/tools/jmx/package-summary.html">com.google.inject.tools.jmx</a></li>
<li class="api apilevel-Guice_2.0">
<a href="../../../../com/google/inject/util/package-summary.html">com.google.inject.util</a></li>
</ul><br/>
</div> <!-- end packages -->
</div> <!-- end resize-packages -->
<div id="classes-nav">
<ul>
<li><h2>Interfaces</h2>
<ul>
<li class="api apilevel-Guice_3.0"><a href="../../../../com/google/inject/multibindings/MapBinderBinding.html">MapBinderBinding</a>&lt;T&gt;</li>
<li class="api apilevel-Guice_3.0"><a href="../../../../com/google/inject/multibindings/MultibinderBinding.html">MultibinderBinding</a>&lt;T&gt;</li>
<li class="api apilevel-Guice_3.0"><a href="../../../../com/google/inject/multibindings/MultibindingsTargetVisitor.html">MultibindingsTargetVisitor</a>&lt;T,&nbsp;V&gt;</li>
</ul>
</li>
<li><h2>Classes</h2>
<ul>
<li class="api apilevel-Guice_2.0"><a href="../../../../com/google/inject/multibindings/MapBinder.html">MapBinder</a>&lt;K,&nbsp;V&gt;</li>
<li class="selected api apilevel-Guice_2.0"><a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</li>
</ul>
</li>
</ul><br/>
</div><!-- end classes -->
</div><!-- end nav-panels -->
<div id="nav-tree" style="display:none">
<div id="index-links"><nobr>
<a href="../../../../packages.html" >Package Index</a> |
<a href="../../../../classes.html" >Class Index</a></nobr>
</div>
</div><!-- end nav-tree -->
</div><!-- end swapper -->
</div> <!-- end side-nav -->
<script>
if (!isMobile) {
$("<a href='#' id='nav-swap' onclick='swapNav();return false;' style='font-size:10px;line-height:9px;margin-left:1em;text-decoration:none;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a>").appendTo("#side-nav");
chooseDefaultNav();
if ($("#nav-tree").is(':visible')) {
init_default_navtree("../../../../");
} else {
addLoadEvent(function() {
scrollIntoView("packages-nav");
scrollIntoView("classes-nav");
});
}
$("#swapper").css({borderBottom:"2px solid #aaa"});
} else {
swapNav(); // tree view should be used on mobile
}
</script>
<div class="g-unit" id="doc-content">
<div id="api-info-block">
<div class="sum-details-links">
Summary:
<a href="#pubmethods">Methods</a>
&#124; <a href="#inhmethods">Inherited Methods</a>
&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
</div><!-- end sum-details-links -->
<div class="api-level">
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div><!-- end api-info-block -->
<!-- ======== START OF CLASS DATA ======== -->
<div id="jd-header">
public
abstract
class
<h1>Multibinder</h1>
extends Object<br/>
</div><!-- end header -->
<div id="naMessage"></div>
<div id="jd-content" class="api apilevel-Guice_2.0">
<table class="jd-inheritance-table">
<tr>
<td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
</tr>
<tr>
<td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
<td colspan="1" class="jd-inheritance-class-cell">com.google.inject.multibindings.Multibinder&lt;T&gt;</td>
</tr>
</table>
<div class="jd-descr">
<h2>Class Overview</h2>
<p>An API to bind multiple values separately, only to later inject them as a
complete collection. Multibinder is intended for use in your application's
module:
<pre><code>
public class SnacksModule extends AbstractModule {
protected void configure() {
Multibinder&lt;Snack&gt; multibinder
= Multibinder.newSetBinder(binder(), Snack.class);
multibinder.addBinding().toInstance(new Twix());
multibinder.addBinding().toProvider(SnickersProvider.class);
multibinder.addBinding().to(Skittles.class);
}
}</code></pre>
<p>With this binding, a Set<code>&lt;Snack&gt;</code> can now be injected:
<pre><code>
class SnackMachine {
@Inject
public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
}</code></pre>
<p>Contributing multibindings from different modules is supported. For
example, it is okay to have both <code>CandyModule</code> and <code>ChipsModule</code>
to both create their own <code>Multibinder&lt;Snack&gt;</code>, and to each contribute
bindings to the set of snacks. When that set is injected, it will contain
elements from both modules.
<p>The set's iteration order is consistent with the binding order. This is
convenient when multiple elements are contributed by the same module because
that module can order its bindings appropriately. Avoid relying on the
iteration order of elements contributed by different modules, since there is
no equivalent mechanism to order modules.
<p>The set is unmodifiable. Elements can only be added to the set by
configuring the multibinder. Elements can never be removed from the set.
<p>Elements are resolved at set injection time. If an element is bound to a
provider, that provider's get method will be called each time the set is
injected (unless the binding is also scoped).
<p>Annotations are be used to create different sets of the same element
type. Each distinct annotation gets its own independent collection of
elements.
<p><strong>Elements must be distinct.</strong> If multiple bound elements
have the same value, set injection will fail.
<p><strong>Elements must be non-null.</strong> If any set element is null,
set injection will fail.</p>
</div><!-- jd-descr -->
<div class="jd-descr">
<h2>Summary</h2>
<!-- ========== METHOD SUMMARY =========== -->
<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
<tr class="alt-color api apilevel-Guice_2.0" >
<td class="jd-typecol"><nobr>
abstract
<a href="../../../../com/google/inject/binder/LinkedBindingBuilder.html">LinkedBindingBuilder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#addBinding()">addBinding</a></span>()</nobr>
<div class="jd-descrdiv">Returns a binding builder used to add a new element in the set.</div>
</td></tr>
<tr class=" api apilevel-Guice_2.0" >
<td class="jd-typecol"><nobr>
static
&lt;T&gt;
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#newSetBinder(com.google.inject.Binder, com.google.inject.TypeLiteral<T>)">newSetBinder</a></span>(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, <a href="../../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt; type)</nobr>
<div class="jd-descrdiv">Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with no binding annotation.</div>
</td></tr>
<tr class="alt-color api apilevel-Guice_2.0" >
<td class="jd-typecol"><nobr>
static
&lt;T&gt;
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#newSetBinder(com.google.inject.Binder, com.google.inject.TypeLiteral<T>, java.lang.Class<? extends java.lang.annotation.Annotation>)">newSetBinder</a></span>(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, <a href="../../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt; type, Class&lt;?&nbsp;extends&nbsp;Annotation&gt; annotationType)</nobr>
<div class="jd-descrdiv">Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotationType</code>.</div>
</td></tr>
<tr class=" api apilevel-Guice_2.0" >
<td class="jd-typecol"><nobr>
static
&lt;T&gt;
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#newSetBinder(com.google.inject.Binder, com.google.inject.TypeLiteral<T>, java.lang.annotation.Annotation)">newSetBinder</a></span>(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, <a href="../../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt; type, Annotation annotation)</nobr>
<div class="jd-descrdiv">Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotation</code>.</div>
</td></tr>
<tr class="alt-color api apilevel-Guice_2.0" >
<td class="jd-typecol"><nobr>
static
&lt;T&gt;
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#newSetBinder(com.google.inject.Binder, java.lang.Class<T>)">newSetBinder</a></span>(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, Class&lt;T&gt; type)</nobr>
<div class="jd-descrdiv">Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with no binding annotation.</div>
</td></tr>
<tr class=" api apilevel-Guice_2.0" >
<td class="jd-typecol"><nobr>
static
&lt;T&gt;
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#newSetBinder(com.google.inject.Binder, java.lang.Class<T>, java.lang.Class<? extends java.lang.annotation.Annotation>)">newSetBinder</a></span>(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, Class&lt;T&gt; type, Class&lt;?&nbsp;extends&nbsp;Annotation&gt; annotationType)</nobr>
<div class="jd-descrdiv">Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotationType</code>.</div>
</td></tr>
<tr class="alt-color api apilevel-Guice_2.0" >
<td class="jd-typecol"><nobr>
static
&lt;T&gt;
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#newSetBinder(com.google.inject.Binder, java.lang.Class<T>, java.lang.annotation.Annotation)">newSetBinder</a></span>(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, Class&lt;T&gt; type, Annotation annotation)</nobr>
<div class="jd-descrdiv">Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotation</code>.</div>
</td></tr>
<tr class=" api apilevel-Guice_3.0" >
<td class="jd-typecol"><nobr>
abstract
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad"><a href="../../../../com/google/inject/multibindings/Multibinder.html#permitDuplicates()">permitDuplicates</a></span>()</nobr>
<div class="jd-descrdiv">Configures the bound set to silently discard duplicate elements.</div>
</td></tr>
</table>
<!-- ========== METHOD SUMMARY =========== -->
<table id="inhmethods" class="jd-sumtable"><tr><th>
<a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
<div style="clear:left;">Inherited Methods</div></th></tr>
<tr class="api apilevel-" >
<td colspan="12">
<a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
><img id="inherited-methods-java.lang.Object-trigger"
src="../../../../../javadoc/assets/images/triangle-closed.png"
class="jd-expando-trigger-img" /></a>
From class
java.lang.Object
<div id="inherited-methods-java.lang.Object">
<div id="inherited-methods-java.lang.Object-list"
class="jd-inheritedlinks">
</div>
<div id="inherited-methods-java.lang.Object-summary" style="display: none;">
<table class="jd-sumtable-expando">
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
Object</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">clone</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
boolean</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">equals</span>(Object arg0)</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">finalize</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
final
Class&lt;?&gt;</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">getClass</span>()</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
int</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">hashCode</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">notify</span>()</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">notifyAll</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
String</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">toString</span>()</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">wait</span>()</nobr>
</td></tr>
<tr class=" api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">wait</span>(long arg0)</nobr>
</td></tr>
<tr class="alt-color api apilevel-" >
<td class="jd-typecol"><nobr>
final
void</nobr>
</td>
<td class="jd-linkcol" width="100%"><nobr>
<span class="sympad">wait</span>(long arg0, int arg1)</nobr>
</td></tr>
</table>
</div>
</div>
</td></tr>
</table>
</div><!-- jd-descr (summary) -->
<!-- Details -->
<!-- XML Attributes -->
<!-- Enum Values -->
<!-- Constants -->
<!-- Fields -->
<!-- Public ctors -->
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<!-- Protected ctors -->
<!-- ========= METHOD DETAIL ======== -->
<!-- Public methdos -->
<h2>Public Methods</h2>
<A NAME="addBinding()"></A>
<div class="jd-details api apilevel-Guice_2.0">
<h4 class="jd-details-title">
<span class="normal">
public
abstract
<a href="../../../../com/google/inject/binder/LinkedBindingBuilder.html">LinkedBindingBuilder</a>&lt;T&gt;
</span>
<span class="sympad">addBinding</span>
<span class="normal">()</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Returns a binding builder used to add a new element in the set. Each
bound element must have a distinct value. Bound providers will be
evaluated each time the set is injected.
<p>It is an error to call this method without also calling one of the
<code>to</code> methods on the returned binding builder.
<p>Scoping elements independently is supported. Use the <code>in</code> method
to specify a binding scope.
</p></div>
</div>
</div>
<A NAME="newSetBinder(com.google.inject.Binder, com.google.inject.TypeLiteral<T>)"></A>
<div class="jd-details api apilevel-Guice_2.0">
<h4 class="jd-details-title">
<span class="normal">
public
static
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;
</span>
<span class="sympad">newSetBinder</span>
<span class="normal">(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, <a href="../../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt; type)</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with no binding annotation.
</p></div>
</div>
</div>
<A NAME="newSetBinder(com.google.inject.Binder, com.google.inject.TypeLiteral<T>, java.lang.Class<? extends java.lang.annotation.Annotation>)"></A>
<div class="jd-details api apilevel-Guice_2.0">
<h4 class="jd-details-title">
<span class="normal">
public
static
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;
</span>
<span class="sympad">newSetBinder</span>
<span class="normal">(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, <a href="../../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt; type, Class&lt;?&nbsp;extends&nbsp;Annotation&gt; annotationType)</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotationType</code>.
</p></div>
</div>
</div>
<A NAME="newSetBinder(com.google.inject.Binder, com.google.inject.TypeLiteral<T>, java.lang.annotation.Annotation)"></A>
<div class="jd-details api apilevel-Guice_2.0">
<h4 class="jd-details-title">
<span class="normal">
public
static
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;
</span>
<span class="sympad">newSetBinder</span>
<span class="normal">(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, <a href="../../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt; type, Annotation annotation)</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotation</code>.
</p></div>
</div>
</div>
<A NAME="newSetBinder(com.google.inject.Binder, java.lang.Class<T>)"></A>
<div class="jd-details api apilevel-Guice_2.0">
<h4 class="jd-details-title">
<span class="normal">
public
static
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;
</span>
<span class="sympad">newSetBinder</span>
<span class="normal">(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, Class&lt;T&gt; type)</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with no binding annotation.
</p></div>
</div>
</div>
<A NAME="newSetBinder(com.google.inject.Binder, java.lang.Class<T>, java.lang.Class<? extends java.lang.annotation.Annotation>)"></A>
<div class="jd-details api apilevel-Guice_2.0">
<h4 class="jd-details-title">
<span class="normal">
public
static
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;
</span>
<span class="sympad">newSetBinder</span>
<span class="normal">(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, Class&lt;T&gt; type, Class&lt;?&nbsp;extends&nbsp;Annotation&gt; annotationType)</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotationType</code>.
</p></div>
</div>
</div>
<A NAME="newSetBinder(com.google.inject.Binder, java.lang.Class<T>, java.lang.annotation.Annotation)"></A>
<div class="jd-details api apilevel-Guice_2.0">
<h4 class="jd-details-title">
<span class="normal">
public
static
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;
</span>
<span class="sympad">newSetBinder</span>
<span class="normal">(<a href="../../../../com/google/inject/Binder.html">Binder</a> binder, Class&lt;T&gt; type, Annotation annotation)</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_2.0">API Level Guice_2.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Returns a new multibinder that collects instances of <code>type</code> in a Set that is
itself bound with <code>annotation</code>.
</p></div>
</div>
</div>
<A NAME="permitDuplicates()"></A>
<div class="jd-details api apilevel-Guice_3.0">
<h4 class="jd-details-title">
<span class="normal">
public
abstract
<a href="../../../../com/google/inject/multibindings/Multibinder.html">Multibinder</a>&lt;T&gt;
</span>
<span class="sympad">permitDuplicates</span>
<span class="normal">()</span>
</h4>
<div class="api-level">
<div>
Since: <a href="../../../../guide/appendix/api-levels.html#levelGuice_3.0">API Level Guice_3.0</a>
</div>
</div>
<div class="jd-details-descr">
<div class="jd-tagdata jd-tagdescr"><p>Configures the bound set to silently discard duplicate elements. When multiple equal values are
bound, the one that gets included is arbitrary. When multiple modules contribute elements to
the set, this configuration option impacts all of them.</p></div>
<div class="jd-tagdata">
<h5 class="jd-tagtitle">Returns</h5>
<ul class="nolist"><li>this multibinder
</li></ul>
</div>
</div>
</div>
<!-- ========= METHOD DETAIL ======== -->
<!-- ========= END OF CLASS DATA ========= -->
<A NAME="navbar_top"></A>
<div id="footer">
Generated by <a href="http://code.google.com/p/doclava/">Doclava</a>.
</div> <!-- end footer -->
</div> <!-- jd-content -->
</div><!-- end doc-content -->
</div> <!-- end body-content -->
<script type="text/javascript">
init(); /* initialize android-developer-docs.js */
</script>
</body>
</html>