blob: 8439bf6768f0eb80559c024076f1658ef8bef6aa [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="zh">
<head>
<!-- Generated by javadoc -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SqlCaseOperator (Apache Calcite calcite API)</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="SqlCaseOperator (Apache Calcite calcite API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10};
var tabs = {65535:["t0","所有方法"],2:["t2","实例方法"],8:["t4","具体方法"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="跳过导航链接">跳过导航链接</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="导航">
<li><a href="../../../../../overview-summary.html">概览</a></li>
<li><a href="package-summary.html">程序包</a></li>
<li class="navBarCell1Rev"></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../../../../deprecated-list.html">已过时</a></li>
<li><a href="../../../../../index-all.html">索引</a></li>
<li><a href="../../../../../help-doc.html">帮助</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/sql/fun/SqlCase.html" title="org.apache.calcite.sql.fun中的类"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../../org/apache/calcite/sql/fun/SqlCastFunction.html" title="org.apache.calcite.sql.fun中的类"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/sql/fun/SqlCaseOperator.html" target="_top">框架</a></li>
<li><a href="SqlCaseOperator.html" target="_top">无框架</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">所有类</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>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
<li>构造器&nbsp;|&nbsp;</li>
<li><a href="#method.summary">方法</a></li>
</ul>
<ul class="subNavList">
<li>详细资料:&nbsp;</li>
<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
<li>构造器&nbsp;|&nbsp;</li>
<li><a href="#method.detail">方法</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.calcite.sql.fun</div>
<h2 title="类 SqlCaseOperator" class="title">类 SqlCaseOperator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">org.apache.calcite.sql.SqlOperator</a></li>
<li>
<ul class="inheritance">
<li>org.apache.calcite.sql.fun.SqlCaseOperator</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">SqlCaseOperator</span>
extends <a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></pre>
<div class="block">An operator describing a <code>CASE</code>, <code>NULLIF</code> or <code>
COALESCE</code> expression. All of these forms are normalized at parse time
to a to a simple <code>CASE</code> statement like this:
<blockquote><pre><code>CASE
WHEN &lt;when expression_0&gt; THEN &lt;then expression_0&gt;
WHEN &lt;when expression_1&gt; THEN &lt;then expression_1&gt;
...
WHEN &lt;when expression_N&gt; THEN &lt;then expression_N&gt;
ELSE &lt;else expression&gt;
END</code></pre></blockquote>
<p>The switched form of the <code>CASE</code> statement is normalized to the
simple form by inserting calls to the <code>=</code> operator. For
example,</p>
<blockquote><pre><code>CASE x + y
WHEN 1 THEN 'fee'
WHEN 2 THEN 'fie'
ELSE 'foe'
END</code></pre></blockquote>
<p>becomes</p>
<blockquote><pre><code>CASE
WHEN Equals(x + y, 1) THEN 'fee'
WHEN Equals(x + y, 2) THEN 'fie'
ELSE 'foe'
END</code></pre></blockquote>
<p>REVIEW jhyde 2004/3/19 Does <code>Equals</code> handle NULL semantics
correctly?</p>
<p><code>COALESCE(x, y, z)</code> becomes</p>
<blockquote><pre><code>CASE
WHEN x IS NOT NULL THEN x
WHEN y IS NOT NULL THEN y
ELSE z
END</code></pre></blockquote>
<p><code>NULLIF(x, -1)</code> becomes</p>
<blockquote><pre><code>CASE
WHEN x = -1 THEN NULL
ELSE x
END</code></pre></blockquote>
<p>Note that some of these normalizations cause expressions to be duplicated.
This may make it more difficult to write optimizer rules (because the rules
will have to deduce that expressions are equivalent). It also requires that
some part of the planning process (probably the generator of the calculator
program) does common sub-expression elimination.</p>
<p>REVIEW jhyde 2004/3/19. Expanding expressions at parse time has some other
drawbacks. It is more difficult to give meaningful validation errors: given
<code>COALESCE(DATE '2004-03-18', 3.5)</code>, do we issue a type-checking
error against a <code>CASE</code> operator? Second, I'd like to use the
<a href="../../../../../org/apache/calcite/sql/SqlNode.html" title="org.apache.calcite.sql中的类"><code>SqlNode</code></a> object model to generate SQL to send to 3rd-party databases,
but there's now no way to represent a call to COALESCE or NULLIF. All in all,
it would be better to have operators for COALESCE, NULLIF, and both simple
and switched forms of CASE, then translate to simple CASE when building the
<a href="../../../../../org/apache/calcite/rex/RexNode.html" title="org.apache.calcite.rex中的类"><code>RexNode</code></a> tree.</p>
<p>The arguments are physically represented as follows:</p>
<ul>
<li>The <i>when</i> expressions are stored in a <a href="../../../../../org/apache/calcite/sql/SqlNodeList.html" title="org.apache.calcite.sql中的类"><code>SqlNodeList</code></a>
whenList.</li>
<li>The <i>then</i> expressions are stored in a <a href="../../../../../org/apache/calcite/sql/SqlNodeList.html" title="org.apache.calcite.sql中的类"><code>SqlNodeList</code></a>
thenList.</li>
<li>The <i>else</i> expression is stored as a regular <a href="../../../../../org/apache/calcite/sql/SqlNode.html" title="org.apache.calcite.sql中的类"><code>SqlNode</code></a>.</li>
</ul></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>字段概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="字段概要表, 列表字段和解释">
<caption><span>字段</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">限定符和类型</th>
<th class="colLast" scope="col">字段和说明</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html" title="org.apache.calcite.sql.fun中的类">SqlCaseOperator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#INSTANCE">INSTANCE</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.calcite.sql.SqlOperator">
<!-- -->
</a>
<h3>从类继承的字段&nbsp;org.apache.calcite.sql.<a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></h3>
<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#kind">kind</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#MDX_PRECEDENCE">MDX_PRECEDENCE</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#NL">NL</a></code></li>
</ul>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>方法概要</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="方法概要表, 列表方法和解释">
<caption><span id="t0" class="activeTableTab"><span>所有方法</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">实例方法</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">具体方法</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">限定符和类型</th>
<th class="colLast" scope="col">方法和说明</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/calcite/sql/fun/SqlCaseOperator.html#checkOperandTypes-org.apache.calcite.sql.SqlCallBinding-boolean-">checkOperandTypes</a></span>(<a href="../../../../../org/apache/calcite/sql/SqlCallBinding.html" title="org.apache.calcite.sql中的类">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</code>
<div class="block">Checks that the operand values in a <a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类"><code>SqlCall</code></a> to this operator are
valid.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#createCall-org.apache.calcite.sql.SqlLiteral-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">createCall</a></span>(<a href="../../../../../org/apache/calcite/sql/SqlLiteral.html" title="org.apache.calcite.sql中的类">SqlLiteral</a>&nbsp;functionQualifier,
<a href="../../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="org.apache.calcite.sql.parser中的类">SqlParserPos</a>&nbsp;pos,
<a href="../../../../../org/apache/calcite/sql/SqlNode.html" title="org.apache.calcite.sql中的类">SqlNode</a>...&nbsp;operands)</code>
<div class="block">Creates a call to this operand with an array of operands.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/type/RelDataType.html" title="org.apache.calcite.rel.type中的接口">RelDataType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">deriveType</a></span>(<a href="../../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="org.apache.calcite.sql.validate中的接口">SqlValidator</a>&nbsp;validator,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="org.apache.calcite.sql.validate中的接口">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a>&nbsp;call)</code>
<div class="block">Derives the type of a call to this operator.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/sql/SqlOperandCountRange.html" title="org.apache.calcite.sql中的接口">SqlOperandCountRange</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#getOperandCountRange--">getOperandCountRange</a></span>()</code>
<div class="block">Returns a constraint on the number of operands expected by this operator.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/sql/SqlSyntax.html" title="org.apache.calcite.sql中的枚举">SqlSyntax</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#getSyntax--">getSyntax</a></span>()</code>
<div class="block">Returns the syntactic type of this operator, never null.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/calcite/rel/type/RelDataType.html" title="org.apache.calcite.rel.type中的接口">RelDataType</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-">inferReturnType</a></span>(<a href="../../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="org.apache.calcite.sql中的类">SqlOperatorBinding</a>&nbsp;opBinding)</code>
<div class="block">Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#unparse-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlCall-int-int-">unparse</a></span>(<a href="../../../../../org/apache/calcite/sql/SqlWriter.html" title="org.apache.calcite.sql中的接口">SqlWriter</a>&nbsp;writer,
<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a>&nbsp;call_,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</code>
<div class="block">Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html#validateCall-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.validate.SqlValidatorScope-">validateCall</a></span>(<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a>&nbsp;call,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="org.apache.calcite.sql.validate中的接口">SqlValidator</a>&nbsp;validator,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="org.apache.calcite.sql.validate中的接口">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="org.apache.calcite.sql.validate中的接口">SqlValidatorScope</a>&nbsp;operandScope)</code>
<div class="block">Validates a call to this operator.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.calcite.sql.SqlOperator">
<!-- -->
</a>
<h3>从类继承的方法&nbsp;org.apache.calcite.sql.<a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></h3>
<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#acceptCall-org.apache.calcite.sql.util.SqlVisitor-org.apache.calcite.sql.SqlCall-">acceptCall</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#acceptCall-org.apache.calcite.sql.util.SqlVisitor-org.apache.calcite.sql.SqlCall-boolean-org.apache.calcite.sql.util.SqlBasicVisitor.ArgHandler-">acceptCall</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#adjustType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-org.apache.calcite.rel.type.RelDataType-">adjustType</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#allowsFraming--">allowsFraming</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#argumentMustBeScalar-int-">argumentMustBeScalar</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#checkOperandCount-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.type.SqlOperandTypeChecker-org.apache.calcite.sql.SqlCall-">checkOperandCount</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#constructArgNameList-org.apache.calcite.sql.SqlCall-">constructArgNameList</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#constructArgTypeList-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-java.util.List-boolean-">constructArgTypeList</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#constructOperandList-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-java.util.List-">constructOperandList</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.SqlNodeList-">createCall</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.parser.SqlParserPos-java.util.List-">createCall</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">createCall</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#equals-java.lang.Object-">equals</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getAllowedSignatures--">getAllowedSignatures</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getAllowedSignatures-java.lang.String-">getAllowedSignatures</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getKind--">getKind</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getLeftPrec--">getLeftPrec</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getMonotonicity-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidatorScope-">getMonotonicity</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getMonotonicity-org.apache.calcite.sql.SqlOperatorBinding-">getMonotonicity</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getName--">getName</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getNameAsId--">getNameAsId</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getOperandTypeChecker--">getOperandTypeChecker</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getOperandTypeInference--">getOperandTypeInference</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getReturnTypeInference--">getReturnTypeInference</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getRightPrec--">getRightPrec</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getSignatureTemplate-int-">getSignatureTemplate</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#hashCode--">hashCode</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.rel.type.RelDataTypeFactory-java.util.List-">inferReturnType</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#isAggregator--">isAggregator</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#isDeterministic--">isDeterministic</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#isDynamicFunction--">isDynamicFunction</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#isGroup--">isGroup</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#isGroupAuxiliary--">isGroupAuxiliary</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#isName-java.lang.String-boolean-">isName</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#leftPrec-int-boolean-">leftPrec</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#preValidateCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">preValidateCall</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#requiresDecimalExpansion--">requiresDecimalExpansion</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#requiresOrder--">requiresOrder</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#requiresOver--">requiresOver</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#rewriteCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.SqlCall-">rewriteCall</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#rightPrec-int-boolean-">rightPrec</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#toString--">toString</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#unparseListClause-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlNode-">unparseListClause</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#unparseListClause-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlNode-org.apache.calcite.sql.SqlKind-">unparseListClause</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#validateOperands-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">validateOperands</a>, <a href="../../../../../org/apache/calcite/sql/SqlOperator.html#validRexOperands-int-org.apache.calcite.util.Litmus-">validRexOperands</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="java.lang中的类或接口">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="java.lang中的类或接口">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="java.lang中的类或接口">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="java.lang中的类或接口">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="java.lang中的类或接口">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="java.lang中的类或接口">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="java.lang中的类或接口">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="java.lang中的类或接口">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="java.lang中的类或接口">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>字段详细资料</h3>
<a name="INSTANCE">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>INSTANCE</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/calcite/sql/fun/SqlCaseOperator.html" title="org.apache.calcite.sql.fun中的类">SqlCaseOperator</a> INSTANCE</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>方法详细资料</h3>
<a name="validateCall-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.validate.SqlValidatorScope-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateCall</h4>
<pre>public&nbsp;void&nbsp;validateCall(<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a>&nbsp;call,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="org.apache.calcite.sql.validate中的接口">SqlValidator</a>&nbsp;validator,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="org.apache.calcite.sql.validate中的接口">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="org.apache.calcite.sql.validate中的接口">SqlValidatorScope</a>&nbsp;operandScope)</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#validateCall-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.validate.SqlValidatorScope-">SqlOperator</a></code></span></div>
<div class="block">Validates a call to this operator.
<p>This method should not perform type-derivation or perform validation
related related to types. That is done later, by
<a href="../../../../../org/apache/calcite/sql/SqlOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-"><code>SqlOperator.deriveType(SqlValidator, SqlValidatorScope, SqlCall)</code></a>. This method
should focus on structural validation.
<p>A typical implementation of this method first validates the operands,
then performs some operator-specific logic. The default implementation
just validates the operands.
<p>This method is the default implementation of <a href="../../../../../org/apache/calcite/sql/SqlCall.html#validate-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-"><code>SqlCall.validate(org.apache.calcite.sql.validate.SqlValidator, org.apache.calcite.sql.validate.SqlValidatorScope)</code></a>;
but note that some sub-classes of <a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类"><code>SqlCall</code></a> never call this method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#validateCall-org.apache.calcite.sql.SqlCall-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.validate.SqlValidatorScope-">validateCall</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></code></dd>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>call</code> - the call to this operator</dd>
<dd><code>validator</code> - the active validator</dd>
<dd><code>scope</code> - validator scope</dd>
<dd><code>operandScope</code> - validator scope in which to validate operands to this
call; usually equal to scope, but not always because
some operators introduce new scopes</dd>
<dt><span class="seeLabel">另请参阅:</span></dt>
<dd><a href="../../../../../org/apache/calcite/sql/SqlNode.html#validateExpr-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-"><code>SqlNode.validateExpr(SqlValidator, SqlValidatorScope)</code></a>,
<a href="../../../../../org/apache/calcite/sql/SqlOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-"><code>SqlOperator.deriveType(SqlValidator, SqlValidatorScope, SqlCall)</code></a></dd>
</dl>
</li>
</ul>
<a name="deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deriveType</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rel/type/RelDataType.html" title="org.apache.calcite.rel.type中的接口">RelDataType</a>&nbsp;deriveType(<a href="../../../../../org/apache/calcite/sql/validate/SqlValidator.html" title="org.apache.calcite.sql.validate中的接口">SqlValidator</a>&nbsp;validator,
<a href="../../../../../org/apache/calcite/sql/validate/SqlValidatorScope.html" title="org.apache.calcite.sql.validate中的接口">SqlValidatorScope</a>&nbsp;scope,
<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a>&nbsp;call)</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">SqlOperator</a></code></span></div>
<div class="block">Derives the type of a call to this operator.
<p>This method is an intrinsic part of the validation process so, unlike
<a href="../../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-"><code>SqlOperator.inferReturnType(org.apache.calcite.sql.SqlOperatorBinding)</code></a>, specific operators would not typically override
this method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#deriveType-org.apache.calcite.sql.validate.SqlValidator-org.apache.calcite.sql.validate.SqlValidatorScope-org.apache.calcite.sql.SqlCall-">deriveType</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></code></dd>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>validator</code> - Validator</dd>
<dd><code>scope</code> - Scope of validation</dd>
<dd><code>call</code> - Call to this operator</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>Type of call</dd>
</dl>
</li>
</ul>
<a name="checkOperandTypes-org.apache.calcite.sql.SqlCallBinding-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkOperandTypes</h4>
<pre>public&nbsp;boolean&nbsp;checkOperandTypes(<a href="../../../../../org/apache/calcite/sql/SqlCallBinding.html" title="org.apache.calcite.sql中的类">SqlCallBinding</a>&nbsp;callBinding,
boolean&nbsp;throwOnFailure)</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#checkOperandTypes-org.apache.calcite.sql.SqlCallBinding-boolean-">SqlOperator</a></code></span></div>
<div class="block">Checks that the operand values in a <a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类"><code>SqlCall</code></a> to this operator are
valid. Subclasses must either override this method or supply an instance
of <a href="../../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="org.apache.calcite.sql.type中的接口"><code>SqlOperandTypeChecker</code></a> to the constructor.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#checkOperandTypes-org.apache.calcite.sql.SqlCallBinding-boolean-">checkOperandTypes</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></code></dd>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>callBinding</code> - description of call</dd>
<dd><code>throwOnFailure</code> - whether to throw an exception if check fails
(otherwise returns false in that case)</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>whether check succeeded</dd>
</dl>
</li>
</ul>
<a name="inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>inferReturnType</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/rel/type/RelDataType.html" title="org.apache.calcite.rel.type中的接口">RelDataType</a>&nbsp;inferReturnType(<a href="../../../../../org/apache/calcite/sql/SqlOperatorBinding.html" title="org.apache.calcite.sql中的类">SqlOperatorBinding</a>&nbsp;opBinding)</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-">SqlOperator</a></code></span></div>
<div class="block">Infers the return type of an invocation of this operator; only called
after the number and types of operands have already been validated.
Subclasses must either override this method or supply an instance of
<a href="../../../../../org/apache/calcite/sql/type/SqlReturnTypeInference.html" title="org.apache.calcite.sql.type中的接口"><code>SqlReturnTypeInference</code></a> to the constructor.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#inferReturnType-org.apache.calcite.sql.SqlOperatorBinding-">inferReturnType</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></code></dd>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>opBinding</code> - description of invocation (not necessarily a
<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类"><code>SqlCall</code></a>)</dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>inferred return type</dd>
</dl>
</li>
</ul>
<a name="getOperandCountRange--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperandCountRange</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/sql/SqlOperandCountRange.html" title="org.apache.calcite.sql中的接口">SqlOperandCountRange</a>&nbsp;getOperandCountRange()</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getOperandCountRange--">SqlOperator</a></code></span></div>
<div class="block">Returns a constraint on the number of operands expected by this operator.
Subclasses may override this method; when they don't, the range is
derived from the <a href="../../../../../org/apache/calcite/sql/type/SqlOperandTypeChecker.html" title="org.apache.calcite.sql.type中的接口"><code>SqlOperandTypeChecker</code></a> associated with this
operator.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getOperandCountRange--">getOperandCountRange</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></code></dd>
<dt><span class="returnLabel">返回:</span></dt>
<dd>acceptable range</dd>
</dl>
</li>
</ul>
<a name="getSyntax--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSyntax</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/sql/SqlSyntax.html" title="org.apache.calcite.sql中的枚举">SqlSyntax</a>&nbsp;getSyntax()</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getSyntax--">SqlOperator</a></code></span></div>
<div class="block">Returns the syntactic type of this operator, never null.</div>
<dl>
<dt><span class="overrideSpecifyLabel">指定者:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#getSyntax--">getSyntax</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></code></dd>
</dl>
</li>
</ul>
<a name="createCall-org.apache.calcite.sql.SqlLiteral-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createCall</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a>&nbsp;createCall(<a href="../../../../../org/apache/calcite/sql/SqlLiteral.html" title="org.apache.calcite.sql中的类">SqlLiteral</a>&nbsp;functionQualifier,
<a href="../../../../../org/apache/calcite/sql/parser/SqlParserPos.html" title="org.apache.calcite.sql.parser中的类">SqlParserPos</a>&nbsp;pos,
<a href="../../../../../org/apache/calcite/sql/SqlNode.html" title="org.apache.calcite.sql中的类">SqlNode</a>...&nbsp;operands)</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.SqlLiteral-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">SqlOperator</a></code></span></div>
<div class="block">Creates a call to this operand with an array of operands.
<p>The position of the resulting call is the union of the <code>
pos</code> and the positions of all of the operands.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#createCall-org.apache.calcite.sql.SqlLiteral-org.apache.calcite.sql.parser.SqlParserPos-org.apache.calcite.sql.SqlNode...-">createCall</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></code></dd>
<dt><span class="paramLabel">参数:</span></dt>
<dd><code>functionQualifier</code> - function qualifier (e.g. "DISTINCT"), may be</dd>
<dd><code>pos</code> - parser position of the identifier of the call</dd>
<dd><code>operands</code> - array of operands</dd>
</dl>
</li>
</ul>
<a name="unparse-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlCall-int-int-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>unparse</h4>
<pre>public&nbsp;void&nbsp;unparse(<a href="../../../../../org/apache/calcite/sql/SqlWriter.html" title="org.apache.calcite.sql中的接口">SqlWriter</a>&nbsp;writer,
<a href="../../../../../org/apache/calcite/sql/SqlCall.html" title="org.apache.calcite.sql中的类">SqlCall</a>&nbsp;call_,
int&nbsp;leftPrec,
int&nbsp;rightPrec)</pre>
<div class="block"><span class="descfrmTypeLabel">从类复制的说明:&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#unparse-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlCall-int-int-">SqlOperator</a></code></span></div>
<div class="block">Writes a SQL representation of a call to this operator to a writer,
including parentheses if the operators on either side are of greater
precedence.
<p>The default implementation of this method delegates to
<a href="../../../../../org/apache/calcite/sql/SqlSyntax.html#unparse-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlOperator-org.apache.calcite.sql.SqlCall-int-int-"><code>SqlSyntax.unparse(org.apache.calcite.sql.SqlWriter, org.apache.calcite.sql.SqlOperator, org.apache.calcite.sql.SqlCall, int, int)</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">覆盖:</span></dt>
<dd><code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html#unparse-org.apache.calcite.sql.SqlWriter-org.apache.calcite.sql.SqlCall-int-int-">unparse</a></code>&nbsp;在类中&nbsp;<code><a href="../../../../../org/apache/calcite/sql/SqlOperator.html" title="org.apache.calcite.sql中的类">SqlOperator</a></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="跳过导航链接">跳过导航链接</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="导航">
<li><a href="../../../../../overview-summary.html">概览</a></li>
<li><a href="package-summary.html">程序包</a></li>
<li class="navBarCell1Rev"></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../../../../deprecated-list.html">已过时</a></li>
<li><a href="../../../../../index-all.html">索引</a></li>
<li><a href="../../../../../help-doc.html">帮助</a></li>
</ul>
<div class="aboutLanguage"><b>Apache Calcite</b></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/calcite/sql/fun/SqlCase.html" title="org.apache.calcite.sql.fun中的类"><span class="typeNameLink">上一个类</span></a></li>
<li><a href="../../../../../org/apache/calcite/sql/fun/SqlCastFunction.html" title="org.apache.calcite.sql.fun中的类"><span class="typeNameLink">下一个类</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/calcite/sql/fun/SqlCaseOperator.html" target="_top">框架</a></li>
<li><a href="SqlCaseOperator.html" target="_top">无框架</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">所有类</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>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li><a href="#field.summary">字段</a>&nbsp;|&nbsp;</li>
<li>构造器&nbsp;|&nbsp;</li>
<li><a href="#method.summary">方法</a></li>
</ul>
<ul class="subNavList">
<li>详细资料:&nbsp;</li>
<li><a href="#field.detail">字段</a>&nbsp;|&nbsp;</li>
<li>构造器&nbsp;|&nbsp;</li>
<li><a href="#method.detail">方法</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &copy; 2012-2020 Apache Software Foundation. All Rights Reserved.</small></p>
</body>
</html>