blob: f7abfa6db18ee6cab432851681eb8783a409fc9b [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>PHDJavaObject.Builder (OpenJ9 JDK 11)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="keywords" content="com.ibm.dtfj.phd.PHDJavaObject.Builder class">
<meta name="keywords" content="refs()">
<meta name="keywords" content="refsAsArray()">
<meta name="keywords" content="length()">
<meta name="keywords" content="instanceSize()">
<meta name="keywords" content="build()">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="PHDJavaObject.Builder (OpenJ9 JDK 11)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/PHDJavaObject.Builder.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><div style="margin-top: 9px;"><strong>OpenJ9 JDK 11</strong></div></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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 id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="moduleLabelInType">Module</span>&nbsp;<a href="../../../../module-summary.html">openj9.dtfj</a></div>
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.ibm.dtfj.phd</a></div>
<h2 title="Class PHDJavaObject.Builder" class="title">Class PHDJavaObject.Builder</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.ibm.dtfj.phd.PHDJavaObject.Builder</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>Enclosing class:</dt>
<dd><a href="PHDJavaObject.html" title="class in com.ibm.dtfj.phd">PHDJavaObject</a></dd>
</dl>
<hr>
<pre>public static class <span class="typeNameLabel">PHDJavaObject.Builder</span>
extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">Object</a></pre>
<div class="block">The constructors for PHDJavaObject used to take up to 11 arguments, many of which were ints. This made it hard to tie up which
argument corresponded to which parameter and invited errors since there can be no type checking.
<p>
This is now fixed by the use of the Builder pattern as described in
Effective Java Second Edition by Joshua Bloch (http://cyclo.ps/books/Prentice.Hall.Effective.Java.2nd.Edition.May.2008.pdf),
item 2 "Consider a builder when faced with many constructor parameters".
<p>
The only way to construct a PHDJavaObject is now using this Builder. Required arguments are set with
a call to the Builder constructor, then optional arguments are set, then build() is called, usually all
in one line using a fluent interface.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(com.ibm.dtfj.phd.PHDJavaHeap,long,com.ibm.dtfj.java.JavaClass,int,int)">Builder</a></span>&#8203;(com.ibm.dtfj.phd.PHDJavaHeap&nbsp;heap,
long&nbsp;address,
<a href="../java/JavaClass.html" title="interface in com.ibm.dtfj.java">JavaClass</a>&nbsp;cls,
int&nbsp;flags,
int&nbsp;hashCode)</code></th>
<td class="colLast">
<div class="block">Initialize a Builder for a PHDJavaClass with the five required parameters.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</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="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="PHDJavaObject.html" title="class in com.ibm.dtfj.phd">PHDJavaObject</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#build()">build</a></span>()</code></th>
<td class="colLast">
<div class="block">Build the PHDJavaObject using all the required and optional values given so far.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#instanceSize(long)">instanceSize</a></span>&#8203;(long&nbsp;instanceSize)</code></th>
<td class="colLast">
<div class="block">Add the instance size attribute to a PHDJavaObject before building it.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#length(int)">length</a></span>&#8203;(int&nbsp;length)</code></th>
<td class="colLast">
<div class="block">Add the length attribute to a PHDJavaObject before building it.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#refs(com.ibm.dtfj.phd.util.LongEnumeration,int)">refs</a></span>&#8203;(<a href="util/LongEnumeration.html" title="interface in com.ibm.dtfj.phd.util">LongEnumeration</a>&nbsp;refs,
int&nbsp;skipped)</code></th>
<td class="colLast">
<div class="block">Add the refs attribute to a PHDJavaObject before building it.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#refsAsArray(long%5B%5D,int)">refsAsArray</a></span>&#8203;(long[]&nbsp;refs,
int&nbsp;skipped)</code></th>
<td class="colLast">
<div class="block">Add the refs attribute to a PHDJavaObject before building it.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods declared in class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink" target="_blank">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink" target="_blank">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink" target="_blank">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink" target="_blank">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink" target="_blank">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink" target="_blank">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink" target="_blank">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink" target="_blank">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink" target="_blank">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink" target="_blank">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_blank">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(com.ibm.dtfj.phd.PHDJavaHeap,long,com.ibm.dtfj.java.JavaClass,int,int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Builder</h4>
<pre>public&nbsp;Builder&#8203;(com.ibm.dtfj.phd.PHDJavaHeap&nbsp;heap,
long&nbsp;address,
<a href="../java/JavaClass.html" title="interface in com.ibm.dtfj.java">JavaClass</a>&nbsp;cls,
int&nbsp;flags,
int&nbsp;hashCode)</pre>
<div class="block">Initialize a Builder for a PHDJavaClass with the five required parameters.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>heap</code> - </dd>
<dd><code>address</code> - </dd>
<dd><code>cls</code> - </dd>
<dd><code>flags</code> - </dd>
<dd><code>hashCode</code> - </dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="refs(com.ibm.dtfj.phd.util.LongEnumeration,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>refs</h4>
<pre class="methodSignature">public&nbsp;<a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a>&nbsp;refs&#8203;(<a href="util/LongEnumeration.html" title="interface in com.ibm.dtfj.phd.util">LongEnumeration</a>&nbsp;refs,
int&nbsp;skipped)</pre>
<div class="block">Add the refs attribute to a PHDJavaObject before building it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>refs</code> - </dd>
<dd><code>skipped</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the builder for further attributes or a call to build()</dd>
</dl>
</li>
</ul>
<a id="refsAsArray(long[],int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>refsAsArray</h4>
<pre class="methodSignature">public&nbsp;<a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a>&nbsp;refsAsArray&#8203;(long[]&nbsp;refs,
int&nbsp;skipped)</pre>
<div class="block">Add the refs attribute to a PHDJavaObject before building it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>refs</code> - </dd>
<dd><code>skipped</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the builder for further attributes or a call to build()</dd>
</dl>
</li>
</ul>
<a id="length(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>length</h4>
<pre class="methodSignature">public&nbsp;<a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a>&nbsp;length&#8203;(int&nbsp;length)</pre>
<div class="block">Add the length attribute to a PHDJavaObject before building it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>length</code> - </dd>
<dt><span class="returnLabel">Returns:</span></dt>
</dl>
</li>
</ul>
<a id="instanceSize(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>instanceSize</h4>
<pre class="methodSignature">public&nbsp;<a href="PHDJavaObject.Builder.html" title="class in com.ibm.dtfj.phd">PHDJavaObject.Builder</a>&nbsp;instanceSize&#8203;(long&nbsp;instanceSize)</pre>
<div class="block">Add the instance size attribute to a PHDJavaObject before building it.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>instance</code> - size</dd>
<dt><span class="returnLabel">Returns:</span></dt>
</dl>
</li>
</ul>
<a id="build()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>build</h4>
<pre class="methodSignature">public&nbsp;<a href="PHDJavaObject.html" title="class in com.ibm.dtfj.phd">PHDJavaObject</a>&nbsp;build()</pre>
<div class="block">Build the PHDJavaObject using all the required and optional values given so far.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the PHDJavaObject</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/PHDJavaObject.Builder.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><div style="margin-top: 9px;"><strong>OpenJ9 JDK 11</strong></div></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.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>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</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 id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small><a href="https://www.eclipse.org/openj9/" target="_blank">Eclipse OpenJ9 website.</a><br> To raise a bug report or suggest an improvement create an <a href="https://github.com/eclipse-openj9/openj9/issues" target="_blank">Eclipse Openj9 issue.</a><br> Copyright &copy; 1998, 2021, IBM Corp. and others.</small></p>
</footer>
</body>
</html>