Wenn Sie eine Variable sind definiert, erscheint es durchaus gültig zu sein, um eine Variable zu deklarieren/definieren wie folgt:In Java, wann ist die Array-Abkürzung {a, b, c, ...} unpassend und warum?
double[][] output = {{0,0},{1,0}};
Aber wenn Sie Wert sind Rückkehr, scheint es, als ungültig zu sein folgendes zu schreiben :
public double[] foo(){
return {0,1,2}
}
Ich hätte gedacht, dass intern beide die gleiche Aktion ausgeführt hätten. Zumindest ist Eclipse nicht einverstanden. Weiß jemand, was der Unterschied ist und wo er sonst gesehen werden kann, oder warum es nützlich wäre, das frühere Beispiel zu akzeptieren und das letztere abzulehnen?
Edit: okay, also ist es angebracht, wenn Sie initialisieren, aber ich sehe keine Mehrdeutigkeit ... konnte die JVM nicht den Typ der Variablen aus dem Namen der Variablen interpretieren (im Falle der Neudefinition bereits initialisierte Variablen) oder bei der Rückgabe (wobei die JVM nur den Rückgabetyp der Funktion betrachten könnte)? Was macht die Initialisierung zu einem Sonderfall einer Regel, die den impliziten Typ verbieten würde? Was macht die allgemeine Regel expliziten Typ?
"Es ist nur während einer Deklaration akzeptabel." Warum? Warum nicht während einer Rückkehr Aussage? –
@JohnP Weil die Sprache es nicht erlaubt. Soweit ich weiß, gibt es keinen guten Fall dagegen (ich denke, der Compiler muss vielleicht etwas mehr Typinferenz machen, um sicherzustellen, dass die Erstellung sicher ist). – Jeffrey