<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>