<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="NL-BE" link="blue" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-GB">Hi <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">I came across "4.12.2. Variables of Reference Type" today and I had<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">a small concern. The way the section is worded it feels a bit like<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">some of the rules override some of the other rules.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">* A variable of a class type T can hold a null reference or a reference<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"> to an instance of class T or of any class that is a subclass of T.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">* A variable of type Object can hold a null reference or a reference to<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"> any object, whether it is an instance of a class or an array.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">Now one can argue that the first rule doesn't (explicitly) exclude
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">that variables can hold references to arrays, but then it also
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">wouldn't exclude the case where a variable of the type Integer can't
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">hold a String. As such it feels fair to say that the references listed<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">are all the valid references it can store, and that the later rule is<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">overriding the specification of the earlier rule.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">However this raises another issue<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">* If T is a reference type, then a variable of type "array of T" can
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"> hold a null reference or a reference to any array of
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"> type "array of S" such that type S is a subclass or
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"> subinterface of type T.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">* A variable of type Object[] can hold a reference to an array of any<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"> reference type.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">If we were to say that here the second rule overrides the first rule,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">then it would be illegal for a variable of the type `Object[]` to<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">contain null.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">Greetings<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB">Robbe Pincket</span><span lang="EN-GB"><o:p></o:p></span></p>
</div>
</body>
</html>