<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<br>
<blockquote type="cite" cite="mid:378455064.7555429.1655222779146.JavaMail.zimbra@u-pem.fr">
<div style="font-family: arial, helvetica, sans-serif; font-size:
12pt; color: #000000">
<div data-marker="__QUOTED_TEXT__">
<blockquote style="border-left:2px solid
#1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;">
<br>
Here are two examples of where a B2 class could safely and
beneficially use B2.val:<br>
<br>
<font face="monospace"> value class Rational { <br>
Rational[] harmonicSeq(int n) { <br>
Rational.val[] rs = new Rational.val[n];<br>
for (int i=0; i<n; i++)<br>
rs[i] = new Rational(1, n);<br>
return rs;<br>
}<br>
}<br>
<br>
Here, we've made a _flat_ array of Rational.val, properly
initialized it, and returned it to the user. THe user
gets the benefit of flatness, but can't screw it up,
because of the array store check. If Rational.val were
illegal, then no array of rationals could be flat. </font></blockquote>
<div><br>
</div>
<div>but you are leaking Rational.val as the class of the
array, so one can write<br data-mce-bogus="1">
</div>
<div> var array = Rational.<span style="font-family:
monospace;">harmonicSeq(3);</span><span style="font-family: monospace;"></span></div>
<div><span style="font-family: monospace;"> var array2 =
Arrays.copyOf(array, array.length + 1);<br data-mce-bogus="1">
</span></div>
<div><span style="font-family: monospace;"> var defaultValue =
array2[array2.length - 1];<br data-mce-bogus="1">
</span></div>
</div>
</div>
</blockquote>
<br>
I'm going to ask you, again, to choose your words more carefully. <br>
<br>
It seems you are suggesting "this model is bad because look, here's
a hole." If that's what you mean, this is a very inappropriate way
to engage. This is a high-level discussion of user model; to pick
nits over bad assumptions about low-level details that haven't even
been discussed yet, and then use to cast doubt over the design, is
the height of unconstructive interaction.<br>
<br>
If what you mean is "This is great, but don't forget we'll have to
address the accessibility model", then you should say that. But OF
COURSE we have to defend the accessibility model. This is an
obvious and normal part of the design process (in fact, John and I
were talking about this not one hour ago.) Don't forget that
Object::getClass leaks class mirrors too! But there are other
checks to prevent bad things from happening. <br>
<br>
<blockquote type="cite" cite="mid:378455064.7555429.1655222779146.JavaMail.zimbra@u-pem.fr">
<div style="font-family: arial, helvetica, sans-serif; font-size:
12pt; color: #000000">
<div data-marker="__QUOTED_TEXT__">
<div>Currently we live in a world where apart of using
jdk.unsupported, there is no way to get an uninitialized
object even by reflection,</div>
<div>you propose to shatter that idea and to allow to bypass
the constructor and have access to the default value
directly in the language.<br data-mce-bogus="1">
</div>
</div>
</div>
</blockquote>
<br>
Words like "shatter" are unnecessarily inflammatory. Worse,
leveling inflammatory accusations before you've even understood what
is being proposed, is completely unconstructive. <br>
<br>
Further, you have been working with us for long enough that you know
that we don't casually undermine the safety of the programming
model. So if what we're proposing sounds dangerous, you should
think first that maybe you don't fully understand it, before making
accusations? <br>
<br>
Please -- do better. <br>
<br>
<br>
</body>
</html>