Hlavní navigace

Názor k článku
Novinky v JDK 7 aneb mírný pokrok v mezích zákona – projekt Lambda

Jaroslav Tulach
Jaroslav Tulach (neregistrovaný) ---.sun.com
3. 12. 2010 9:58 Nový

Zabalit do pole

celé vlákno

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.