Názor k článku Novinky v JDK 7 aneb mírný pokrok v mezích zákona – projekt Lambda od Jaroslav Tulach - Tradiční řešení přístupu k lokálním proměnným je zabalit...

  • Článek je starý, nové názory již nelze přidávat.
  • 3. 12. 2010 9:58

    Jaroslav Tulach (neregistrovaný)

    Tradiční řešení přístupu k lokálním proměnným je zabalit je do pole o velikosti jedna.

    final int[] y = new int[1];
    y[0] = 0;
    new Runnable() {
      public void run() {
        y[0]++;
      }
    }.run();
    assert y[0] == 1;

    Neexistuje jediný technický důvod, proč by překladač Javy nemohl automaticky balit proměnné ze zásobníku. Lidé by pak klidně mohli psát:

    int y = 0;
    new Runnable() {
      public void run() {
        y++;
      }
    }.run();
    assert y == 1;

    což by bylo přirozené a čitelnější. Překladač by to pak upravil do výše popsané formy pole s jedním prvkem. Všichni vědí, že by to šlo a čas od času někdo i navrhne, že by se to mohlo udělat. Bohužel tento nápad má v Santa Kláře vlivné odpůrce, kteří jej vždy smetou ze stolu.

    Mám pocit, že jeden z návrhů na lambdy obsahoval i možnost plnohodnotného přístupu na lokální proměnné (snad se musely oanotovat pomocí @Shared), ale nevsadil bych si na to, že projde.