2012-04-07 4 views
1

In meiner Klasse habe ich Feld int count. Ich möchte eine neue Variable nach dem Wert count Variable wie folgt erstellen: int a = new Integer(count). Aber wenn ich die Zählvariable count++ aktualisiere, wird auch die Variable a aktualisiert. So, wie man nicht-referenzierende int-Variable erstellt?GWT. Create primitive (no-referencable) Integer Variable

Antwort

3

Sie können dies nicht mit Java tun. Ihre nächste Wette wäre eine umschließende Klasse mit einem einzigen int zu erstellen und beziehen sich auf diese statt:

class MutableInteger { 
    public int value; 
} 

Dann später:

MutableInteger a = new MutableInteger(); 
a.value = 5; 

MutableInteger b = a; 
b.value++; 

a.value++; 

//since a.value is the same primitive as b.value, they are both 7 

Aber: Das bricht eine Reihe von allgemein anerkannten besten Praktiken in Java. Sie könnten nach einem alternativen Weg suchen, um zu lösen, was auch immer Ihr wirkliches Problem ist.

+0

+1 - Einfach nur neugierig, was ist die beste Praxis Sie diese Pausen, dass mit Bezug sind? – jmort253

2

Die Situation, die Sie beschrieben haben, kann nicht wirklich passieren.

Versuchen Sie diesen Code:

int count = 15; 
int a = new Integer(count); 
count++; 
Window.alert("a is "+ a + " and count is " + count); 

count aktualisiert und a nicht. Es bedeutet also, dass Sie woanders Fehler haben.

1

Versuchen Sie Folgendes:

int a = count + 0; 
+1

dies hilft nicht ( – MyTitle

+0

Sie sollten erklären, wie dies genau helfen wird, so ist es klar, was Ihre Antwort löst. – jmort253

+0

Das Problem war, wie die gleiche Referenz auf 2 ganze Zahlen zu brechen. Und mein Beispiel es zu lösen. Was ist los? Oder kann Ich verstehe nicht richtig, was die Frage ist, tut mir leid, wenn es so ist – hsestupin

0

Ihr Problem etwas fehlgeleitet ist. Hier ist warum:

In Java werden die Grundwerte, wenn kopiert, ihre Referenzen nicht kopiert. Suchen Sie nach Ihrem Code und suchen Sie, wo Sie einen zusätzlichen Schritt ausführen.

Der Konstruktor von Integer verwendet diese:

this.integer = integer; 
Verwandte Themen