1*3ff81872SXin Li<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2*3ff81872SXin Li<!--NewPage--> 3*3ff81872SXin Li<HTML> 4*3ff81872SXin Li<HEAD> 5*3ff81872SXin Li<!-- Generated by javadoc (build 1.5.0_16) on Mon Oct 12 16:11:19 PDT 2009 --> 6*3ff81872SXin Li<TITLE> 7*3ff81872SXin LiProvider 8*3ff81872SXin Li</TITLE> 9*3ff81872SXin Li 10*3ff81872SXin Li<META NAME="keywords" CONTENT="javax.inject.Provider interface"> 11*3ff81872SXin Li 12*3ff81872SXin Li<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style"> 13*3ff81872SXin Li 14*3ff81872SXin Li<SCRIPT type="text/javascript"> 15*3ff81872SXin Lifunction windowTitle() 16*3ff81872SXin Li{ 17*3ff81872SXin Li parent.document.title="Provider"; 18*3ff81872SXin Li} 19*3ff81872SXin Li</SCRIPT> 20*3ff81872SXin Li<NOSCRIPT> 21*3ff81872SXin Li</NOSCRIPT> 22*3ff81872SXin Li 23*3ff81872SXin Li</HEAD> 24*3ff81872SXin Li 25*3ff81872SXin Li<BODY BGCOLOR="white" onload="windowTitle();"> 26*3ff81872SXin Li 27*3ff81872SXin Li 28*3ff81872SXin Li<!-- ========= START OF TOP NAVBAR ======= --> 29*3ff81872SXin Li<A NAME="navbar_top"><!-- --></A> 30*3ff81872SXin Li<A HREF="#skip-navbar_top" title="Skip navigation links"></A> 31*3ff81872SXin Li<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 32*3ff81872SXin Li<TR> 33*3ff81872SXin Li<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 34*3ff81872SXin Li<A NAME="navbar_top_firstrow"><!-- --></A> 35*3ff81872SXin Li<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 36*3ff81872SXin Li <TR ALIGN="center" VALIGN="top"> 37*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../javax/inject/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 38*3ff81872SXin Li <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 39*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 40*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 41*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 42*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 43*3ff81872SXin Li </TR> 44*3ff81872SXin Li</TABLE> 45*3ff81872SXin Li</TD> 46*3ff81872SXin Li<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 47*3ff81872SXin Li</EM> 48*3ff81872SXin Li</TD> 49*3ff81872SXin Li</TR> 50*3ff81872SXin Li 51*3ff81872SXin Li<TR> 52*3ff81872SXin Li<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 53*3ff81872SXin Li <A HREF="../../javax/inject/Named.html" title="annotation in javax.inject"><B>PREV CLASS</B></A> 54*3ff81872SXin Li <A HREF="../../javax/inject/Qualifier.html" title="annotation in javax.inject"><B>NEXT CLASS</B></A></FONT></TD> 55*3ff81872SXin Li<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 56*3ff81872SXin Li <A HREF="../../index.html?javax/inject/Provider.html" target="_top"><B>FRAMES</B></A> 57*3ff81872SXin Li <A HREF="Provider.html" target="_top"><B>NO FRAMES</B></A> 58*3ff81872SXin Li <SCRIPT type="text/javascript"> 59*3ff81872SXin Li <!-- 60*3ff81872SXin Li if(window==top) { 61*3ff81872SXin Li document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>'); 62*3ff81872SXin Li } 63*3ff81872SXin Li //--> 64*3ff81872SXin Li</SCRIPT> 65*3ff81872SXin Li<NOSCRIPT> 66*3ff81872SXin Li <A HREF="../../allclasses-noframe.html"><B>All Classes</B></A> 67*3ff81872SXin Li</NOSCRIPT> 68*3ff81872SXin Li 69*3ff81872SXin Li 70*3ff81872SXin Li</FONT></TD> 71*3ff81872SXin Li</TR> 72*3ff81872SXin Li<TR> 73*3ff81872SXin Li<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 74*3ff81872SXin Li SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 75*3ff81872SXin Li<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 76*3ff81872SXin LiDETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 77*3ff81872SXin Li</TR> 78*3ff81872SXin Li</TABLE> 79*3ff81872SXin Li<A NAME="skip-navbar_top"></A> 80*3ff81872SXin Li<!-- ========= END OF TOP NAVBAR ========= --> 81*3ff81872SXin Li 82*3ff81872SXin Li<HR> 83*3ff81872SXin Li<!-- ======== START OF CLASS DATA ======== --> 84*3ff81872SXin Li<H2> 85*3ff81872SXin Li<FONT SIZE="-1"> 86*3ff81872SXin Lijavax.inject</FONT> 87*3ff81872SXin Li<BR> 88*3ff81872SXin LiInterface Provider<T></H2> 89*3ff81872SXin Li<HR> 90*3ff81872SXin Li<DL> 91*3ff81872SXin Li<DT><PRE>public interface <B>Provider<T></B></DL> 92*3ff81872SXin Li</PRE> 93*3ff81872SXin Li 94*3ff81872SXin Li<P> 95*3ff81872SXin LiProvides instances of <code>T</code>. Typically implemented by an injector. For 96*3ff81872SXin Li any type <code>T</code> that can be injected, you can also inject 97*3ff81872SXin Li <code>Provider<T></code>. Compared to injecting <code>T</code> directly, injecting 98*3ff81872SXin Li <code>Provider<T></code> enables: 99*3ff81872SXin Li 100*3ff81872SXin Li <ul> 101*3ff81872SXin Li <li>retrieving multiple instances.</li> 102*3ff81872SXin Li <li>lazy or optional retrieval of an instance.</li> 103*3ff81872SXin Li <li>breaking circular dependencies.</li> 104*3ff81872SXin Li <li>abstracting scope so you can look up an instance in a smaller scope 105*3ff81872SXin Li from an instance in a containing scope.</li> 106*3ff81872SXin Li </ul> 107*3ff81872SXin Li 108*3ff81872SXin Li <p>For example: 109*3ff81872SXin Li 110*3ff81872SXin Li <pre> 111*3ff81872SXin Li class Car { 112*3ff81872SXin Li @Inject Car(Provider<Seat> seatProvider) { 113*3ff81872SXin Li Seat driver = seatProvider.get(); 114*3ff81872SXin Li Seat passenger = seatProvider.get(); 115*3ff81872SXin Li ... 116*3ff81872SXin Li } 117*3ff81872SXin Li }</pre> 118*3ff81872SXin Li<P> 119*3ff81872SXin Li 120*3ff81872SXin Li<P> 121*3ff81872SXin Li<HR> 122*3ff81872SXin Li 123*3ff81872SXin Li<P> 124*3ff81872SXin Li 125*3ff81872SXin Li<!-- ========== METHOD SUMMARY =========== --> 126*3ff81872SXin Li 127*3ff81872SXin Li<A NAME="method_summary"><!-- --></A> 128*3ff81872SXin Li<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 129*3ff81872SXin Li<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 130*3ff81872SXin Li<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 131*3ff81872SXin Li<B>Method Summary</B></FONT></TH> 132*3ff81872SXin Li</TR> 133*3ff81872SXin Li<TR BGCOLOR="white" CLASS="TableRowColor"> 134*3ff81872SXin Li<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 135*3ff81872SXin Li<CODE> <A HREF="../../javax/inject/Provider.html" title="type parameter in Provider">T</A></CODE></FONT></TD> 136*3ff81872SXin Li<TD><CODE><B><A HREF="../../javax/inject/Provider.html#get()">get</A></B>()</CODE> 137*3ff81872SXin Li 138*3ff81872SXin Li<BR> 139*3ff81872SXin Li Provides a fully-constructed and injected instance of <code>T</code>.</TD> 140*3ff81872SXin Li</TR> 141*3ff81872SXin Li</TABLE> 142*3ff81872SXin Li 143*3ff81872SXin Li<P> 144*3ff81872SXin Li 145*3ff81872SXin Li<!-- ============ METHOD DETAIL ========== --> 146*3ff81872SXin Li 147*3ff81872SXin Li<A NAME="method_detail"><!-- --></A> 148*3ff81872SXin Li<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 149*3ff81872SXin Li<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 150*3ff81872SXin Li<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> 151*3ff81872SXin Li<B>Method Detail</B></FONT></TH> 152*3ff81872SXin Li</TR> 153*3ff81872SXin Li</TABLE> 154*3ff81872SXin Li 155*3ff81872SXin Li<A NAME="get()"><!-- --></A><H3> 156*3ff81872SXin Liget</H3> 157*3ff81872SXin Li<PRE> 158*3ff81872SXin Li<A HREF="../../javax/inject/Provider.html" title="type parameter in Provider">T</A> <B>get</B>()</PRE> 159*3ff81872SXin Li<DL> 160*3ff81872SXin Li<DD>Provides a fully-constructed and injected instance of <code>T</code>. 161*3ff81872SXin Li<P> 162*3ff81872SXin Li<DD><DL> 163*3ff81872SXin Li 164*3ff81872SXin Li<DT><B>Throws:</B> 165*3ff81872SXin Li<DD><CODE>java.lang.RuntimeException</CODE> - if the injector encounters an error while 166*3ff81872SXin Li providing an instance. For example, if an injectable member on 167*3ff81872SXin Li <code>T</code> throws an exception, the injector may wrap the exception 168*3ff81872SXin Li and throw it to the caller of <code>get()</code>. Callers should not try 169*3ff81872SXin Li to handle such exceptions as the behavior may vary across injector 170*3ff81872SXin Li implementations and even different configurations of the same injector.</DL> 171*3ff81872SXin Li</DD> 172*3ff81872SXin Li</DL> 173*3ff81872SXin Li<!-- ========= END OF CLASS DATA ========= --> 174*3ff81872SXin Li<HR> 175*3ff81872SXin Li 176*3ff81872SXin Li 177*3ff81872SXin Li<!-- ======= START OF BOTTOM NAVBAR ====== --> 178*3ff81872SXin Li<A NAME="navbar_bottom"><!-- --></A> 179*3ff81872SXin Li<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> 180*3ff81872SXin Li<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 181*3ff81872SXin Li<TR> 182*3ff81872SXin Li<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 183*3ff81872SXin Li<A NAME="navbar_bottom_firstrow"><!-- --></A> 184*3ff81872SXin Li<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 185*3ff81872SXin Li <TR ALIGN="center" VALIGN="top"> 186*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../javax/inject/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 187*3ff81872SXin Li <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 188*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 189*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 190*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 191*3ff81872SXin Li <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 192*3ff81872SXin Li </TR> 193*3ff81872SXin Li</TABLE> 194*3ff81872SXin Li</TD> 195*3ff81872SXin Li<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 196*3ff81872SXin Li</EM> 197*3ff81872SXin Li</TD> 198*3ff81872SXin Li</TR> 199*3ff81872SXin Li 200*3ff81872SXin Li<TR> 201*3ff81872SXin Li<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 202*3ff81872SXin Li <A HREF="../../javax/inject/Named.html" title="annotation in javax.inject"><B>PREV CLASS</B></A> 203*3ff81872SXin Li <A HREF="../../javax/inject/Qualifier.html" title="annotation in javax.inject"><B>NEXT CLASS</B></A></FONT></TD> 204*3ff81872SXin Li<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 205*3ff81872SXin Li <A HREF="../../index.html?javax/inject/Provider.html" target="_top"><B>FRAMES</B></A> 206*3ff81872SXin Li <A HREF="Provider.html" target="_top"><B>NO FRAMES</B></A> 207*3ff81872SXin Li <SCRIPT type="text/javascript"> 208*3ff81872SXin Li <!-- 209*3ff81872SXin Li if(window==top) { 210*3ff81872SXin Li document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>'); 211*3ff81872SXin Li } 212*3ff81872SXin Li //--> 213*3ff81872SXin Li</SCRIPT> 214*3ff81872SXin Li<NOSCRIPT> 215*3ff81872SXin Li <A HREF="../../allclasses-noframe.html"><B>All Classes</B></A> 216*3ff81872SXin Li</NOSCRIPT> 217*3ff81872SXin Li 218*3ff81872SXin Li 219*3ff81872SXin Li</FONT></TD> 220*3ff81872SXin Li</TR> 221*3ff81872SXin Li<TR> 222*3ff81872SXin Li<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 223*3ff81872SXin Li SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 224*3ff81872SXin Li<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 225*3ff81872SXin LiDETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 226*3ff81872SXin Li</TR> 227*3ff81872SXin Li</TABLE> 228*3ff81872SXin Li<A NAME="skip-navbar_bottom"></A> 229*3ff81872SXin Li<!-- ======== END OF BOTTOM NAVBAR ======= --> 230*3ff81872SXin Li 231*3ff81872SXin Li<HR> 232*3ff81872SXin Li<font size='-1'>Copyright (C) 2009 <a href='http://code.google.com/p/atinject/'>The JSR-330 Expert Group</a>. Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0'>Apache License</a>, Version 2.0.</font> 233*3ff81872SXin Li</BODY> 234*3ff81872SXin Li</HTML> 235