| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!--NewPage--> |
| <HTML> |
| <HEAD> |
| <!-- Generated by javadoc (build 1.6.0_26) on Mon Jan 09 16:02:38 EST 2012 --> |
| <TITLE> |
| ProxyBuilder (dexmaker) |
| </TITLE> |
| |
| <META NAME="date" CONTENT="2012-01-09"> |
| |
| <LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style"> |
| |
| <SCRIPT type="text/javascript"> |
| function windowTitle() |
| { |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="ProxyBuilder (dexmaker)"; |
| } |
| } |
| </SCRIPT> |
| <NOSCRIPT> |
| </NOSCRIPT> |
| |
| </HEAD> |
| |
| <BODY BGCOLOR="white" onload="windowTitle();"> |
| <HR> |
| |
| |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <A NAME="navbar_top"><!-- --></A> |
| <A HREF="#skip-navbar_top" title="Skip navigation links"></A> |
| <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> |
| <TR> |
| <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> |
| <A NAME="navbar_top_firstrow"><!-- --></A> |
| <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> |
| <TR ALIGN="center" VALIGN="top"> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> |
| <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> |
| </TR> |
| </TABLE> |
| </TD> |
| <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> |
| </EM> |
| </TD> |
| </TR> |
| |
| <TR> |
| <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> |
| PREV CLASS |
| NEXT CLASS</FONT></TD> |
| <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> |
| <A HREF="../../../../index.html?com/google/dexmaker/stock/ProxyBuilder.html" target="_top"><B>FRAMES</B></A> |
| <A HREF="ProxyBuilder.html" target="_top"><B>NO FRAMES</B></A> |
| <SCRIPT type="text/javascript"> |
| <!-- |
| if(window==top) { |
| document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); |
| } |
| //--> |
| </SCRIPT> |
| <NOSCRIPT> |
| <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> |
| </NOSCRIPT> |
| |
| |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> |
| SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> |
| <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> |
| DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> |
| </TR> |
| </TABLE> |
| <A NAME="skip-navbar_top"></A> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| |
| <HR> |
| <!-- ======== START OF CLASS DATA ======== --> |
| <H2> |
| <FONT SIZE="-1"> |
| com.google.dexmaker.stock</FONT> |
| <BR> |
| Class ProxyBuilder<T></H2> |
| <PRE> |
| java.lang.Object |
| <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>com.google.dexmaker.stock.ProxyBuilder<T></B> |
| </PRE> |
| <HR> |
| <DL> |
| <DT><PRE>public final class <B>ProxyBuilder<T></B><DT>extends java.lang.Object</DL> |
| </PRE> |
| |
| <P> |
| Creates dynamic proxies of concrete classes. |
| <p> |
| This is similar to the <code>java.lang.reflect.Proxy</code> class, but works for classes instead of |
| interfaces. |
| <h3>Example</h3> |
| The following example demonstrates the creation of a dynamic proxy for <code>java.util.Random</code> |
| which will always return 4 when asked for integers, and which logs method calls to every method. |
| <pre> |
| InvocationHandler handler = new InvocationHandler() { |
| @Override |
| public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { |
| if (method.getName().equals("nextInt")) { |
| // Chosen by fair dice roll, guaranteed to be random. |
| return 4; |
| } |
| Object result = ProxyBuilder.callSuper(proxy, method, args); |
| System.out.println("Method: " + method.getName() + " args: " |
| + Arrays.toString(args) + " result: " + result); |
| return result; |
| } |
| }; |
| Random debugRandom = ProxyBuilder.forClass(Random.class) |
| .dexCache(getInstrumentation().getTargetContext().getDir("dx", Context.MODE_PRIVATE)) |
| .handler(handler) |
| .build(); |
| assertEquals(4, debugRandom.nextInt()); |
| debugRandom.setSeed(0); |
| assertTrue(debugRandom.nextBoolean()); |
| </pre> |
| <h3>Usage</h3> |
| Call <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#forClass(java.lang.Class)"><CODE>forClass(Class)</CODE></A> for the Class you wish to proxy. Call |
| <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#handler(java.lang.reflect.InvocationHandler)"><CODE>handler(InvocationHandler)</CODE></A> passing in an <CODE>InvocationHandler</CODE>, and then call |
| <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#build()"><CODE>build()</CODE></A>. The returned instance will be a dynamically generated subclass where all method |
| calls will be delegated to the invocation handler, except as noted below. |
| <p> |
| The static method <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#callSuper(java.lang.Object, java.lang.reflect.Method, java.lang.Object...)"><CODE>callSuper(Object, Method, Object...)</CODE></A> allows you to access the original |
| super method for a given proxy. This allows the invocation handler to selectively override some |
| methods but not others. |
| <p> |
| By default, the <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#build()"><CODE>build()</CODE></A> method will call the no-arg constructor belonging to the class |
| being proxied. If you wish to call a different constructor, you must provide arguments for both |
| <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#constructorArgTypes(java.lang.Class...)"><CODE>constructorArgTypes(Class[])</CODE></A> and <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#constructorArgValues(java.lang.Object...)"><CODE>constructorArgValues(Object[])</CODE></A>. |
| <p> |
| This process works only for classes with public and protected level of visibility. |
| <p> |
| You may proxy abstract classes. You may not proxy final classes. |
| <p> |
| Only non-private, non-final, non-static methods will be dispatched to the invocation handler. |
| Private, static or final methods will always call through to the superclass as normal. |
| <p> |
| The <CODE>Object.finalize()</CODE> method on <code>Object</code> will not be proxied. |
| <p> |
| You must provide a dex cache directory via the <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#dexCache(java.io.File)"><CODE>dexCache(File)</CODE></A> method. You should take |
| care not to make this a world-writable directory, so that third parties cannot inject code into |
| your application. A suitable parameter for these output directories would be something like |
| this: |
| <pre><code>getApplicationContext().getDir("dx", Context.MODE_PRIVATE); |
| </code></pre> |
| <p> |
| If the base class to be proxied leaks the <code>this</code> pointer in the constructor (bad practice), |
| that is to say calls a non-private non-final method from the constructor, the invocation handler |
| will not be invoked. As a simple concrete example, when proxying Random we discover that it |
| inernally calls setSeed during the constructor. The proxy will not intercept this call during |
| proxy construction, but will intercept as normal afterwards. This behaviour may be subject to |
| change in future releases. |
| <p> |
| This class is <b>not thread safe</b>. |
| <P> |
| |
| <P> |
| <HR> |
| |
| <P> |
| |
| <!-- ========== METHOD SUMMARY =========== --> |
| |
| <A NAME="method_summary"><!-- --></A> |
| <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> |
| <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> |
| <TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> |
| <B>Method Summary</B></FONT></TH> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A></CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#build()">build</A></B>()</CODE> |
| |
| <BR> |
| Create a new instance of the class to proxy.</TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE>static java.lang.Object</CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#callSuper(java.lang.Object, java.lang.reflect.Method, java.lang.Object...)">callSuper</A></B>(java.lang.Object proxy, |
| java.lang.reflect.Method method, |
| java.lang.Object... args)</CODE> |
| |
| <BR> |
| </TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>></CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#constructorArgTypes(java.lang.Class...)">constructorArgTypes</A></B>(java.lang.Class<?>... constructorArgTypes)</CODE> |
| |
| <BR> |
| </TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>></CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#constructorArgValues(java.lang.Object...)">constructorArgValues</A></B>(java.lang.Object... constructorArgValues)</CODE> |
| |
| <BR> |
| </TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>></CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#dexCache(java.io.File)">dexCache</A></B>(java.io.File dexCache)</CODE> |
| |
| <BR> |
| </TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE>static |
| <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY=""> |
| <TR ALIGN="right" VALIGN=""> |
| <TD NOWRAP><FONT SIZE="-1"> |
| <CODE><T> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><T></CODE></FONT></TD> |
| </TR> |
| </TABLE> |
| </CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#forClass(java.lang.Class)">forClass</A></B>(java.lang.Class<T> clazz)</CODE> |
| |
| <BR> |
| </TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE>static java.lang.reflect.InvocationHandler</CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#getInvocationHandler(java.lang.Object)">getInvocationHandler</A></B>(java.lang.Object instance)</CODE> |
| |
| <BR> |
| Returns the proxy's <CODE>InvocationHandler</CODE>.</TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>></CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#handler(java.lang.reflect.InvocationHandler)">handler</A></B>(java.lang.reflect.InvocationHandler handler)</CODE> |
| |
| <BR> |
| </TD> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> |
| <CODE> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>></CODE></FONT></TD> |
| <TD><CODE><B><A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html#parentClassLoader(java.lang.ClassLoader)">parentClassLoader</A></B>(java.lang.ClassLoader parent)</CODE> |
| |
| <BR> |
| Specifies the parent ClassLoader to use when creating the proxy.</TD> |
| </TR> |
| </TABLE> |
| <A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A> |
| <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> |
| <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor"> |
| <TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH> |
| </TR> |
| <TR BGCOLOR="white" CLASS="TableRowColor"> |
| <TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD> |
| </TR> |
| </TABLE> |
| |
| <P> |
| |
| <!-- ============ METHOD DETAIL ========== --> |
| |
| <A NAME="method_detail"><!-- --></A> |
| <TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> |
| <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> |
| <TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> |
| <B>Method Detail</B></FONT></TH> |
| </TR> |
| </TABLE> |
| |
| <A NAME="forClass(java.lang.Class)"><!-- --></A><H3> |
| forClass</H3> |
| <PRE> |
| public static <T> <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><T> <B>forClass</B>(java.lang.Class<T> clazz)</PRE> |
| <DL> |
| <DD><DL> |
| </DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="parentClassLoader(java.lang.ClassLoader)"><!-- --></A><H3> |
| parentClassLoader</H3> |
| <PRE> |
| public <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>> <B>parentClassLoader</B>(java.lang.ClassLoader parent)</PRE> |
| <DL> |
| <DD>Specifies the parent ClassLoader to use when creating the proxy. |
| |
| <p>If null, <code>ProxyBuilder.class.getClassLoader()</code> will be used. |
| <P> |
| <DD><DL> |
| </DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="handler(java.lang.reflect.InvocationHandler)"><!-- --></A><H3> |
| handler</H3> |
| <PRE> |
| public <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>> <B>handler</B>(java.lang.reflect.InvocationHandler handler)</PRE> |
| <DL> |
| <DD><DL> |
| </DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="dexCache(java.io.File)"><!-- --></A><H3> |
| dexCache</H3> |
| <PRE> |
| public <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>> <B>dexCache</B>(java.io.File dexCache)</PRE> |
| <DL> |
| <DD><DL> |
| </DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="constructorArgValues(java.lang.Object...)"><!-- --></A><H3> |
| constructorArgValues</H3> |
| <PRE> |
| public <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>> <B>constructorArgValues</B>(java.lang.Object... constructorArgValues)</PRE> |
| <DL> |
| <DD><DL> |
| </DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="constructorArgTypes(java.lang.Class...)"><!-- --></A><H3> |
| constructorArgTypes</H3> |
| <PRE> |
| public <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="class in com.google.dexmaker.stock">ProxyBuilder</A><<A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A>> <B>constructorArgTypes</B>(java.lang.Class<?>... constructorArgTypes)</PRE> |
| <DL> |
| <DD><DL> |
| </DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="build()"><!-- --></A><H3> |
| build</H3> |
| <PRE> |
| public <A HREF="../../../../com/google/dexmaker/stock/ProxyBuilder.html" title="type parameter in ProxyBuilder">T</A> <B>build</B>() |
| throws java.io.IOException</PRE> |
| <DL> |
| <DD>Create a new instance of the class to proxy. |
| <P> |
| <DD><DL> |
| |
| <DT><B>Throws:</B> |
| <DD><CODE>java.lang.UnsupportedOperationException</CODE> - if the class we are trying to create a proxy for is |
| not accessible. |
| <DD><CODE>java.io.IOException</CODE> - if an exception occurred writing to the <code>dexCache</code> directory. |
| <DD><CODE>java.lang.reflect.UndeclaredThrowableException</CODE> - if the constructor for the base class to proxy throws |
| a declared exception during construction. |
| <DD><CODE>java.lang.IllegalArgumentException</CODE> - if the handler is null, if the constructor argument types |
| do not match the constructor argument values, or if no such constructor exists.</DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="getInvocationHandler(java.lang.Object)"><!-- --></A><H3> |
| getInvocationHandler</H3> |
| <PRE> |
| public static java.lang.reflect.InvocationHandler <B>getInvocationHandler</B>(java.lang.Object instance)</PRE> |
| <DL> |
| <DD>Returns the proxy's <CODE>InvocationHandler</CODE>. |
| <P> |
| <DD><DL> |
| |
| <DT><B>Throws:</B> |
| <DD><CODE>java.lang.IllegalArgumentException</CODE> - if the object supplied is not a proxy created by this class.</DL> |
| </DD> |
| </DL> |
| <HR> |
| |
| <A NAME="callSuper(java.lang.Object, java.lang.reflect.Method, java.lang.Object...)"><!-- --></A><H3> |
| callSuper</H3> |
| <PRE> |
| public static java.lang.Object <B>callSuper</B>(java.lang.Object proxy, |
| java.lang.reflect.Method method, |
| java.lang.Object... args) |
| throws java.lang.SecurityException, |
| java.lang.IllegalAccessException, |
| java.lang.reflect.InvocationTargetException, |
| java.lang.NoSuchMethodException</PRE> |
| <DL> |
| <DD><DL> |
| |
| <DT><B>Throws:</B> |
| <DD><CODE>java.lang.SecurityException</CODE> |
| <DD><CODE>java.lang.IllegalAccessException</CODE> |
| <DD><CODE>java.lang.reflect.InvocationTargetException</CODE> |
| <DD><CODE>java.lang.NoSuchMethodException</CODE></DL> |
| </DD> |
| </DL> |
| <!-- ========= END OF CLASS DATA ========= --> |
| <HR> |
| |
| |
| <!-- ======= START OF BOTTOM NAVBAR ====== --> |
| <A NAME="navbar_bottom"><!-- --></A> |
| <A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> |
| <TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> |
| <TR> |
| <TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> |
| <A NAME="navbar_bottom_firstrow"><!-- --></A> |
| <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> |
| <TR ALIGN="center" VALIGN="top"> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> |
| <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> |
| <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> |
| </TR> |
| </TABLE> |
| </TD> |
| <TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> |
| </EM> |
| </TD> |
| </TR> |
| |
| <TR> |
| <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> |
| PREV CLASS |
| NEXT CLASS</FONT></TD> |
| <TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> |
| <A HREF="../../../../index.html?com/google/dexmaker/stock/ProxyBuilder.html" target="_top"><B>FRAMES</B></A> |
| <A HREF="ProxyBuilder.html" target="_top"><B>NO FRAMES</B></A> |
| <SCRIPT type="text/javascript"> |
| <!-- |
| if(window==top) { |
| document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>'); |
| } |
| //--> |
| </SCRIPT> |
| <NOSCRIPT> |
| <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A> |
| </NOSCRIPT> |
| |
| |
| </FONT></TD> |
| </TR> |
| <TR> |
| <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> |
| SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> |
| <TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> |
| DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> |
| </TR> |
| </TABLE> |
| <A NAME="skip-navbar_bottom"></A> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| |
| <HR> |
| |
| </BODY> |
| </HTML> |