<!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>

  TypeLiteral


| 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_1.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_4.0' ];
    
    var SINCE_LABELS = [ 'Guice_1.0', 'Guice_2.0', 'Guice_4.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="selected 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_4.0">
  <a href="../../../com/google/inject/grapher/package-summary.html">com.google.inject.grapher</a></li>
    <li class="api apilevel-Guice_4.0">
  <a href="../../../com/google/inject/grapher/graphviz/package-summary.html">com.google.inject.grapher.graphviz</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="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_4.0">
  <a href="../../../com/google/inject/persist/package-summary.html">com.google.inject.persist</a></li>
    <li class="api apilevel-Guice_4.0">
  <a href="../../../com/google/inject/persist/finder/package-summary.html">com.google.inject.persist.finder</a></li>
    <li class="api apilevel-Guice_4.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_1.0"><a href="../../../com/google/inject/Binder.html">Binder</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Binding.html">Binding</a>&lt;T&gt;</li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Injector.html">Injector</a></li>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/MembersInjector.html">MembersInjector</a>&lt;T&gt;</li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Module.html">Module</a></li>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/PrivateBinder.html">PrivateBinder</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Provider.html">Provider</a>&lt;T&gt;</li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Scope.html">Scope</a></li>
      </ul>
    </li>
              
    <li><h2>Classes</h2>
      <ul>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/AbstractModule.html">AbstractModule</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Guice.html">Guice</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Key.html">Key</a>&lt;T&gt;</li>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/PrivateModule.html">PrivateModule</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Scopes.html">Scopes</a></li>
          <li class="selected api apilevel-Guice_1.0"><a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt;</li>
      </ul>
    </li>
              
    <li><h2>Annotations</h2>
      <ul>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/BindingAnnotation.html">BindingAnnotation</a></li>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/Exposed.html">Exposed</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/ImplementedBy.html">ImplementedBy</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Inject.html">Inject</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/ProvidedBy.html">ProvidedBy</a></li>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/Provides.html">Provides</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/ScopeAnnotation.html">ScopeAnnotation</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Singleton.html">Singleton</a></li>
      </ul>
    </li>
              
    <li><h2>Enums</h2>
      <ul>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/Stage.html">Stage</a></li>
      </ul>
    </li>
              
    <li><h2>Exceptions</h2>
      <ul>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/ConfigurationException.html">ConfigurationException</a></li>
          <li class="api apilevel-Guice_1.0"><a href="../../../com/google/inject/CreationException.html">CreationException</a></li>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/OutOfScopeException.html">OutOfScopeException</a></li>
          <li class="api apilevel-Guice_2.0"><a href="../../../com/google/inject/ProvisionException.html">ProvisionException</a></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="#proctors">Protected Ctors</a>
  


  &#124; <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_1.0">API Level Guice_1.0</a>


  
  

</div>
</div><!-- end api-info-block -->


<!-- ======== START OF CLASS DATA ======== -->

<div id="jd-header">
    public
     
     
    
    class
<h1>TypeLiteral</h1>



  
    extends Object<br/>
  
  
  

  
  
  


</div><!-- end header -->

<div id="naMessage"></div>

<div id="jd-content" class="api apilevel-Guice_1.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.TypeLiteral&lt;T&gt;</td>
    </tr>
    

</table>







<div class="jd-descr">


<h2>Class Overview</h2>
<p>Represents a generic type <code>T</code>. Java doesn't yet provide a way to
 represent generic types, so this class does. Forces clients to create a
 subclass of this class which enables retrieval the type information even at
 runtime.

 <p>For example, to create a type literal for <code>List&lt;String&gt;</code>, you can
 create an empty anonymous inner class:

 <p>
 <code>TypeLiteral&lt;List&lt;String&gt;&gt; list = new TypeLiteral&lt;List&lt;String&gt;&gt;() {</code>;}

 <p>Along with modeling generic types, this class can resolve type parameters.
 For example, to figure out what type <code>keySet()</code> returns on a <code>Map&lt;Integer, String&gt;</code>, use this code:<pre>   <code>TypeLiteral&lt;Map&lt;Integer, String&gt;&gt; mapType
       = new TypeLiteral&lt;Map&lt;Integer, String&gt;&gt;() {</code>;
   TypeLiteral<?> keySetType
       = mapType.getReturnType(Map.class.getMethod("keySet"));
   System.out.println(keySetType); // prints "Set<Integer>"}</pre></p>





</div><!-- jd-descr -->
















<div class="jd-descr">


<h2>Summary</h2>

























<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<table id="proctors" class="jd-sumtable"><tr><th colspan="12">Protected Constructors</th></tr>



	 
    <tr class="alt-color api apilevel-Guice_1.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            </nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#TypeLiteral()">TypeLiteral</a></span>()</nobr>
        
        <div class="jd-descrdiv">Constructs a new type literal.</div>
  
  </td></tr>



</table>




<!-- ========== 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>
            
            
            final
            
            
            boolean</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#equals(java.lang.Object)">equals</a></span>(Object o)</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-Guice_1.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            static
            &lt;T&gt;
            <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#get(java.lang.Class<T>)">get</a></span>(Class&lt;T&gt; type)</nobr>
        
        <div class="jd-descrdiv">Gets type literal for the given <code>Class</code> instance.</div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-Guice_1.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            static
            
            <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#get(java.lang.reflect.Type)">get</a></span>(Type type)</nobr>
        
        <div class="jd-descrdiv">Gets type literal for the given <code>Type</code> instance.</div>
  
  </td></tr>


	 
    <tr class=" api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            List&lt;<a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#getExceptionTypes(java.lang.reflect.Member)">getExceptionTypes</a></span>(Member methodOrConstructor)</nobr>
        
        <div class="jd-descrdiv">Returns the resolved generic exception types thrown by <code>constructor</code>.</div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#getFieldType(java.lang.reflect.Field)">getFieldType</a></span>(Field field)</nobr>
        
        <div class="jd-descrdiv">Returns the resolved generic type of <code>field</code>.</div>
  
  </td></tr>


	 
    <tr class=" api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            List&lt;<a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#getParameterTypes(java.lang.reflect.Member)">getParameterTypes</a></span>(Member methodOrConstructor)</nobr>
        
        <div class="jd-descrdiv">Returns the resolved generic parameter types of <code>methodOrConstructor</code>.</div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            Class&lt;?&nbsp;super&nbsp;T&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#getRawType()">getRawType</a></span>()</nobr>
        
        <div class="jd-descrdiv">Returns the raw (non-generic) type for this type.</div>
  
  </td></tr>


	 
    <tr class=" api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#getReturnType(java.lang.reflect.Method)">getReturnType</a></span>(Method method)</nobr>
        
        <div class="jd-descrdiv">Returns the resolved generic return type of <code>method</code>.</div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            
            
            
            <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#getSupertype(java.lang.Class<?>)">getSupertype</a></span>(Class&lt;?&gt; supertype)</nobr>
        
        <div class="jd-descrdiv">Returns the generic form of <code>supertype</code>.</div>
  
  </td></tr>


	 
    <tr class=" api apilevel-Guice_1.0" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            Type</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#getType()">getType</a></span>()</nobr>
        
        <div class="jd-descrdiv">Gets underlying <code>Type</code> instance.</div>
  
  </td></tr>


	 
    <tr class="alt-color api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            int</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#hashCode()">hashCode</a></span>()</nobr>
        
  </td></tr>


	 
    <tr class=" api apilevel-Guice_2.0" >
        <td class="jd-typecol"><nobr>
            
            
            final
            
            
            String</nobr>
        </td>
        <td class="jd-linkcol" width="100%"><nobr>
        <span class="sympad"><a href="../../../com/google/inject/TypeLiteral.html#toString()">toString</a></span>()</nobr>
        
  </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 -->

<h2>Protected Constructors</h2>



<A NAME="TypeLiteral()"></A>

<div class="jd-details api apilevel-Guice_1.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        protected 
         
         
         
         
        
      </span>
      <span class="sympad">TypeLiteral</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div>

  Since: <a href="../../../guide/appendix/api-levels.html#levelGuice_1.0">API Level Guice_1.0</a>

</div>
        
  

      </div>
    <div class="jd-details-descr">
      
  <div class="jd-tagdata jd-tagdescr"><p>Constructs a new type literal. Derives represented class from type
 parameter.

 <p>Clients create an empty anonymous subclass. Doing so embeds the type
 parameter in the anonymous class's type hierarchy so we can reconstitute it
 at runtime despite erasure.
</p></div>

    </div>
</div>





<!-- ========= METHOD DETAIL ======== -->
<!-- Public methdos -->

<h2>Public Methods</h2>



<A NAME="equals(java.lang.Object)"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
        final 
         
         
        boolean
      </span>
      <span class="sympad">equals</span>
      <span class="normal">(Object o)</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></p></div>

    </div>
</div>


<A NAME="get(java.lang.Class<T>)"></A>

<div class="jd-details api apilevel-Guice_1.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
         
         
         
        <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;T&gt;
      </span>
      <span class="sympad">get</span>
      <span class="normal">(Class&lt;T&gt; type)</span>
    </h4>
      <div class="api-level">
        <div>

  Since: <a href="../../../guide/appendix/api-levels.html#levelGuice_1.0">API Level Guice_1.0</a>

</div>
        
  

      </div>
    <div class="jd-details-descr">
      
  <div class="jd-tagdata jd-tagdescr"><p>Gets type literal for the given <code>Class</code> instance.
</p></div>

    </div>
</div>


<A NAME="get(java.lang.reflect.Type)"></A>

<div class="jd-details api apilevel-Guice_1.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
        static 
         
         
         
        <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;
      </span>
      <span class="sympad">get</span>
      <span class="normal">(Type type)</span>
    </h4>
      <div class="api-level">
        <div>

  Since: <a href="../../../guide/appendix/api-levels.html#levelGuice_1.0">API Level Guice_1.0</a>

</div>
        
  

      </div>
    <div class="jd-details-descr">
      
  <div class="jd-tagdata jd-tagdescr"><p>Gets type literal for the given <code>Type</code> instance.
</p></div>

    </div>
</div>


<A NAME="getExceptionTypes(java.lang.reflect.Member)"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        List&lt;<a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;&gt;
      </span>
      <span class="sympad">getExceptionTypes</span>
      <span class="normal">(Member methodOrConstructor)</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 the resolved generic exception types thrown by <code>constructor</code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>methodOrConstructor</td>
          <td>a method or constructor defined by this or any supertype.</td>
        </tr>
      </table>
  </div>

    </div>
</div>


<A NAME="getFieldType(java.lang.reflect.Field)"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;
      </span>
      <span class="sympad">getFieldType</span>
      <span class="normal">(Field field)</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 the resolved generic type of <code>field</code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>field</td>
          <td>a field defined by this or any superclass.</td>
        </tr>
      </table>
  </div>

    </div>
</div>


<A NAME="getParameterTypes(java.lang.reflect.Member)"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        List&lt;<a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;&gt;
      </span>
      <span class="sympad">getParameterTypes</span>
      <span class="normal">(Member methodOrConstructor)</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 the resolved generic parameter types of <code>methodOrConstructor</code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>methodOrConstructor</td>
          <td>a method or constructor defined by this or any supertype.</td>
        </tr>
      </table>
  </div>

    </div>
</div>


<A NAME="getRawType()"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
        final 
         
         
        Class&lt;?&nbsp;super&nbsp;T&gt;
      </span>
      <span class="sympad">getRawType</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 the raw (non-generic) type for this type.</p></div>

    </div>
</div>


<A NAME="getReturnType(java.lang.reflect.Method)"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;
      </span>
      <span class="sympad">getReturnType</span>
      <span class="normal">(Method method)</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 the resolved generic return type of <code>method</code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>method</td>
          <td>a method defined by this or any supertype.</td>
        </tr>
      </table>
  </div>

    </div>
</div>


<A NAME="getSupertype(java.lang.Class<?>)"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
         
         
         
        <a href="../../../com/google/inject/TypeLiteral.html">TypeLiteral</a>&lt;?&gt;
      </span>
      <span class="sympad">getSupertype</span>
      <span class="normal">(Class&lt;?&gt; supertype)</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 the generic form of <code>supertype</code>. For example, if this is <code>ArrayList&lt;String&gt;</code>, this returns <code>Iterable&lt;String&gt;</code> given the input <code>Iterable.class</code>.</p></div>
  <div class="jd-tagdata">
      <h5 class="jd-tagtitle">Parameters</h5>
      <table class="jd-tagtable">
        <tr>
          <th>supertype</td>
          <td>a superclass of, or interface implemented by, this.</td>
        </tr>
      </table>
  </div>

    </div>
</div>


<A NAME="getType()"></A>

<div class="jd-details api apilevel-Guice_1.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
        final 
         
         
        Type
      </span>
      <span class="sympad">getType</span>
      <span class="normal">()</span>
    </h4>
      <div class="api-level">
        <div>

  Since: <a href="../../../guide/appendix/api-levels.html#levelGuice_1.0">API Level Guice_1.0</a>

</div>
        
  

      </div>
    <div class="jd-details-descr">
      
  <div class="jd-tagdata jd-tagdescr"><p>Gets underlying <code>Type</code> instance.
</p></div>

    </div>
</div>


<A NAME="hashCode()"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
        final 
         
         
        int
      </span>
      <span class="sympad">hashCode</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></p></div>

    </div>
</div>


<A NAME="toString()"></A>

<div class="jd-details api apilevel-Guice_2.0"> 
    <h4 class="jd-details-title">
      <span class="normal">
        public 
         
        final 
         
         
        String
      </span>
      <span class="sympad">toString</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></p></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>
