blob: e96c9bea4b5994ec8ad43eebc192a315ab10df69 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>TypeDescriptor (Apache Beam 2.38.0-SNAPSHOT)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="TypeDescriptor (Apache Beam 2.38.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":9,"i16":9,"i17":10,"i18":10,"i19":10,"i20":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/values/TupleTagList.html" title="class in org.apache.beam.sdk.values"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptors.html" title="class in org.apache.beam.sdk.values"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/values/TypeDescriptor.html" target="_top">Frames</a></li>
<li><a href="TypeDescriptor.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.values</div>
<h2 title="Class TypeDescriptor" class="title">Class TypeDescriptor&lt;T&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.values.TypeDescriptor&lt;T&gt;</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>T</code> - the type represented by this <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a></dd>
</dl>
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable</dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">TypeDescriptor&lt;T&gt;</span>
extends java.lang.Object
implements java.io.Serializable</pre>
<div class="block">A description of a Java type, including actual generic parameters where possible.
<p>To prevent losing actual type arguments due to erasure, create an anonymous subclass with
concrete types:
<pre><code>
TypeDescriptor&lt;List&lt;String&gt;&gt; typeDescriptor = new TypeDescriptor&lt;List&lt;String&gt;&gt;() {};
</code></pre>
<p>If the above were not an anonymous subclass, the type <code>List&lt;String&gt;</code> would be erased and
unavailable at run time.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../serialized-form.html#org.apache.beam.sdk.values.TypeDescriptor">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#TypeDescriptor--">TypeDescriptor</a></span>()</code>
<div class="block">Creates a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the type parameter <code>T</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#TypeDescriptor-java.lang.Class-">TypeDescriptor</a></span>(java.lang.Class&lt;?&gt;&nbsp;clazz)</code>
<div class="block">Creates a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the type parameter <code>T</code>, which should
resolve to a concrete type in the context of the class <code>clazz</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#TypeDescriptor-java.lang.Object-">TypeDescriptor</a></span>(java.lang.Object&nbsp;instance)</code>
<div class="block">Creates a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the type parameter <code>T</code>, which should
resolve to a concrete type in the context of the class <code>clazz</code>.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#equals-java.lang.Object-">equals</a></span>(<a href="https://static.javadoc.io/org.checkerframework/checker-qual/3.10.0/org/checkerframework/checker/nullness/qual/Nullable.html?is-external=true" title="class or interface in org.checkerframework.checker.nullness.qual">@Nullable</a> java.lang.Object&nbsp;other)</code>
<div class="block">Two type descriptor are equal if and only if they represent the same type.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>java.util.List&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getArgumentTypes-java.lang.reflect.Method-">getArgumentTypes</a></span>(java.lang.reflect.Method&nbsp;method)</code>
<div class="block">Returns a list of argument types for the given method, which must be a part of the class.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.Iterable&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getClasses--">getClasses</a></span>()</code>
<div class="block">Returns a set of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>s, one for each superclass (including this class).</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getComponentType--">getComponentType</a></span>()</code>
<div class="block">Returns the component type if this type is an array type, otherwise returns <code>null</code>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>java.lang.Iterable&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getInterfaces--">getInterfaces</a></span>()</code>
<div class="block">Returns a set of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>s, one for each interface implemented by this class.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>java.lang.Class&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getRawType--">getRawType</a></span>()</code>
<div class="block">Returns the <code>Class</code> underlying the <code>Type</code> represented by this <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getSupertype-java.lang.Class-">getSupertype</a></span>(java.lang.Class&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&nbsp;superclass)</code>
<div class="block">Returns the generic form of a supertype.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.lang.reflect.Type</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getType--">getType</a></span>()</code>
<div class="block">Returns the <code>Type</code> represented by this <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.lang.reflect.TypeVariable&lt;java.lang.Class&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getTypeParameter-java.lang.String-">getTypeParameter</a></span>(java.lang.String&nbsp;paramName)</code>
<div class="block">Returns a <code>TypeVariable</code> for the named type parameter.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.lang.Iterable&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#getTypes--">getTypes</a></span>()</code>
<div class="block">Returns a set of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>, one for each superclass as well as each
interface implemented by this class.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#hashCode--">hashCode</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#hasUnresolvedParameters--">hasUnresolvedParameters</a></span>()</code>
<div class="block">Returns whether this <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> has any unresolved type parameters, as opposed to
being a concrete type.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#isArray--">isArray</a></span>()</code>
<div class="block">Returns true if this type is known to be an array type.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#isSubtypeOf-org.apache.beam.sdk.values.TypeDescriptor-">isSubtypeOf</a></span>(<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&nbsp;parent)</code>
<div class="block">Return true if this type is a subtype of the given type.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#isSupertypeOf-org.apache.beam.sdk.values.TypeDescriptor-">isSupertypeOf</a></span>(<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&nbsp;source)</code>
<div class="block">Returns true if this type is assignable from the given type.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;T&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#of-java.lang.Class-">of</a></span>(java.lang.Class&lt;T&gt;&nbsp;type)</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the given type.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#of-java.lang.reflect.Type-">of</a></span>(java.lang.reflect.Type&nbsp;type)</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the given type.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#resolveType-java.lang.reflect.Type-">resolveType</a></span>(java.lang.reflect.Type&nbsp;type)</code>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the given type, with type variables resolved
according to the specialization in this type.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#toString--">toString</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>&lt;X&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#where-org.apache.beam.sdk.values.TypeParameter-org.apache.beam.sdk.values.TypeDescriptor-">where</a></span>(<a href="../../../../../org/apache/beam/sdk/values/TypeParameter.html" title="class in org.apache.beam.sdk.values">TypeParameter</a>&lt;X&gt;&nbsp;typeParameter,
<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;X&gt;&nbsp;typeDescriptor)</code>
<div class="block">Returns a new <code>TypeDescriptor</code> where the type variable represented by <code>typeParameter</code> are substituted by <code>type</code>.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#where-java.lang.reflect.Type-java.lang.reflect.Type-">where</a></span>(java.lang.reflect.Type&nbsp;formal,
java.lang.reflect.Type&nbsp;actual)</code>
<div class="block">A more general form of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#where-org.apache.beam.sdk.values.TypeParameter-org.apache.beam.sdk.values.TypeDescriptor-"><code>where(TypeParameter, TypeDescriptor)</code></a> that returns a new <code>TypeDescriptor</code> by matching <code>formal</code> against <code>actual</code> to resolve type variables in
the current <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, finalize, getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="TypeDescriptor--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TypeDescriptor</h4>
<pre>protected&nbsp;TypeDescriptor()</pre>
<div class="block">Creates a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the type parameter <code>T</code>. To use this
constructor properly, the type parameter must be a concrete type, for example <code>new
TypeDescriptor&lt;List&lt;String&gt;&gt;(){}</code>.</div>
</li>
</ul>
<a name="TypeDescriptor-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TypeDescriptor</h4>
<pre>protected&nbsp;TypeDescriptor(java.lang.Object&nbsp;instance)</pre>
<div class="block">Creates a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the type parameter <code>T</code>, which should
resolve to a concrete type in the context of the class <code>clazz</code>.
<p>Unlike <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#TypeDescriptor-java.lang.Class-"><code>TypeDescriptor(Class)</code></a> this will also use context's of the
enclosing instances while attempting to resolve the type. This means that the types of any
classes instantiated in the concrete instance should be resolvable.</div>
</li>
</ul>
<a name="TypeDescriptor-java.lang.Class-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>TypeDescriptor</h4>
<pre>protected&nbsp;TypeDescriptor(java.lang.Class&lt;?&gt;&nbsp;clazz)</pre>
<div class="block">Creates a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the type parameter <code>T</code>, which should
resolve to a concrete type in the context of the class <code>clazz</code>.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="of-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>of</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;T&gt;&nbsp;of(java.lang.Class&lt;T&gt;&nbsp;type)</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the given type.</div>
</li>
</ul>
<a name="of-java.lang.reflect.Type-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>of</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&nbsp;of(java.lang.reflect.Type&nbsp;type)</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the given type.</div>
</li>
</ul>
<a name="getType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getType</h4>
<pre>public&nbsp;java.lang.reflect.Type&nbsp;getType()</pre>
<div class="block">Returns the <code>Type</code> represented by this <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</li>
</ul>
<a name="getRawType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRawType</h4>
<pre>public&nbsp;java.lang.Class&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&nbsp;getRawType()</pre>
<div class="block">Returns the <code>Class</code> underlying the <code>Type</code> represented by this <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</li>
</ul>
<a name="getComponentType--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getComponentType</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&nbsp;getComponentType()</pre>
<div class="block">Returns the component type if this type is an array type, otherwise returns <code>null</code>.</div>
</li>
</ul>
<a name="getSupertype-java.lang.Class-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSupertype</h4>
<pre>public final&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&nbsp;getSupertype(java.lang.Class&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&nbsp;superclass)</pre>
<div class="block">Returns the generic form of a supertype.</div>
</li>
</ul>
<a name="isArray--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isArray</h4>
<pre>public final&nbsp;boolean&nbsp;isArray()</pre>
<div class="block">Returns true if this type is known to be an array type.</div>
</li>
</ul>
<a name="getTypeParameter-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypeParameter</h4>
<pre>public final&nbsp;java.lang.reflect.TypeVariable&lt;java.lang.Class&lt;? super <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&gt;&nbsp;getTypeParameter(java.lang.String&nbsp;paramName)</pre>
<div class="block">Returns a <code>TypeVariable</code> for the named type parameter. Throws <code>IllegalArgumentException</code> if a type variable by the requested type parameter is not found.
<p>For example, <code>new TypeDescriptor&lt;List&gt;(){}.getTypeParameter("T")</code> returns a <code>TypeVariable&lt;? super List&gt;</code> representing the formal type parameter <code>T</code>.
<p>Do not mistake the type parameters (formal type argument list) with the actual type
arguments. For example, if a class <code>Foo</code> extends <code>List&lt;String&gt;</code>, it does not make
sense to ask for a type parameter, because <code>Foo</code> does not have any.</div>
</li>
</ul>
<a name="isSupertypeOf-org.apache.beam.sdk.values.TypeDescriptor-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSupertypeOf</h4>
<pre>public final&nbsp;boolean&nbsp;isSupertypeOf(<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&nbsp;source)</pre>
<div class="block">Returns true if this type is assignable from the given type.</div>
</li>
</ul>
<a name="isSubtypeOf-org.apache.beam.sdk.values.TypeDescriptor-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSubtypeOf</h4>
<pre>public final&nbsp;boolean&nbsp;isSubtypeOf(<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&nbsp;parent)</pre>
<div class="block">Return true if this type is a subtype of the given type.</div>
</li>
</ul>
<a name="getArgumentTypes-java.lang.reflect.Method-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getArgumentTypes</h4>
<pre>public&nbsp;java.util.List&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&gt;&nbsp;getArgumentTypes(java.lang.reflect.Method&nbsp;method)</pre>
<div class="block">Returns a list of argument types for the given method, which must be a part of the class.</div>
</li>
</ul>
<a name="resolveType-java.lang.reflect.Type-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resolveType</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;?&gt;&nbsp;resolveType(java.lang.reflect.Type&nbsp;type)</pre>
<div class="block">Returns a <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> representing the given type, with type variables resolved
according to the specialization in this type.
<p>For example, consider the following class:
<pre><code>
class MyList implements List&lt;String&gt; { ... }
</code></pre>
<p>The <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> returned by
<pre><code>
TypeDescriptor.of(MyList.class)
.resolveType(Mylist.class.getMethod("get", int.class).getGenericReturnType)
</code></pre>
will represent the type <code>String</code>.</div>
</li>
</ul>
<a name="getTypes--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTypes</h4>
<pre>public&nbsp;java.lang.Iterable&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&gt;&nbsp;getTypes()</pre>
<div class="block">Returns a set of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>, one for each superclass as well as each
interface implemented by this class.</div>
</li>
</ul>
<a name="getInterfaces--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInterfaces</h4>
<pre>public&nbsp;java.lang.Iterable&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&gt;&nbsp;getInterfaces()</pre>
<div class="block">Returns a set of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>s, one for each interface implemented by this class.</div>
</li>
</ul>
<a name="getClasses--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getClasses</h4>
<pre>public&nbsp;java.lang.Iterable&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&gt;&nbsp;getClasses()</pre>
<div class="block">Returns a set of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>s, one for each superclass (including this class).</div>
</li>
</ul>
<a name="where-org.apache.beam.sdk.values.TypeParameter-org.apache.beam.sdk.values.TypeDescriptor-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>where</h4>
<pre>public&nbsp;&lt;X&gt;&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&nbsp;where(<a href="../../../../../org/apache/beam/sdk/values/TypeParameter.html" title="class in org.apache.beam.sdk.values">TypeParameter</a>&lt;X&gt;&nbsp;typeParameter,
<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;X&gt;&nbsp;typeDescriptor)</pre>
<div class="block">Returns a new <code>TypeDescriptor</code> where the type variable represented by <code>typeParameter</code> are substituted by <code>type</code>. For example, it can be used to construct <code>Map&lt;K, V&gt;</code> for any <code>K</code> and <code>V</code> type:
<pre><code>
static &lt;K, V&gt; TypeDescriptor&lt;Map&lt;K, V&gt;&gt; mapOf(
TypeDescriptor&lt;K&gt; keyType, TypeDescriptor&lt;V&gt; valueType) {
return new TypeDescriptor&lt;Map&lt;K, V&gt;&gt;() {}
.where(new TypeParameter&lt;K&gt;() {}, keyType)
.where(new TypeParameter&lt;V&gt;() {}, valueType);
}
</code></pre></div>
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>X</code> - The parameter type</dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typeParameter</code> - the parameter type variable</dd>
<dd><code>typeDescriptor</code> - the actual type to substitute</dd>
</dl>
</li>
</ul>
<a name="where-java.lang.reflect.Type-java.lang.reflect.Type-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>where</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values">TypeDescriptor</a>&lt;<a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="type parameter in TypeDescriptor">T</a>&gt;&nbsp;where(java.lang.reflect.Type&nbsp;formal,
java.lang.reflect.Type&nbsp;actual)</pre>
<div class="block">A more general form of <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html#where-org.apache.beam.sdk.values.TypeParameter-org.apache.beam.sdk.values.TypeDescriptor-"><code>where(TypeParameter, TypeDescriptor)</code></a> that returns a new <code>TypeDescriptor</code> by matching <code>formal</code> against <code>actual</code> to resolve type variables in
the current <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a>.</div>
</li>
</ul>
<a name="hasUnresolvedParameters--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasUnresolvedParameters</h4>
<pre>public&nbsp;boolean&nbsp;hasUnresolvedParameters()</pre>
<div class="block">Returns whether this <a href="../../../../../org/apache/beam/sdk/values/TypeDescriptor.html" title="class in org.apache.beam.sdk.values"><code>TypeDescriptor</code></a> has any unresolved type parameters, as opposed to
being a concrete type.
<p>For example:
<pre><code>
TypeDescriptor.of(new ArrayList&lt;String&gt;() {}.getClass()).hasUnresolvedTypeParameters()
=&gt; false, because the anonymous class is instantiated with a concrete type
class TestUtils {
&lt;T&gt; ArrayList&lt;T&gt; createTypeErasedList() {
return new ArrayList&lt;T&gt;() {};
}
}
TypeDescriptor.of(TestUtils.&lt;String&gt;createTypeErasedList().getClass())
=&gt; true, because the type variable T got type-erased and the anonymous ArrayList class
is instantiated with an unresolved type variable T.
</code></pre></div>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(<a href="https://static.javadoc.io/org.checkerframework/checker-qual/3.10.0/org/checkerframework/checker/nullness/qual/Nullable.html?is-external=true" title="class or interface in org.checkerframework.checker.nullness.qual">@Nullable</a> java.lang.Object&nbsp;other)</pre>
<div class="block">Two type descriptor are equal if and only if they represent the same type.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>equals</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a name="hashCode--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>hashCode</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/beam/sdk/values/TupleTagList.html" title="class in org.apache.beam.sdk.values"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/values/TypeDescriptors.html" title="class in org.apache.beam.sdk.values"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/values/TypeDescriptor.html" target="_top">Frames</a></li>
<li><a href="TypeDescriptor.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>