Se si sta definendo una variabile, sembra essere perfettamente valido per dichiarare/definire una variabile come segue:In Java, quando l'array {a, b, c, ...} è inappropriato, e perché?
double[][] output = {{0,0},{1,0}};
Ma se si sta restituendo un valore, sembra non essere valido per scrivere il seguente :
Avrei pensato che internamente entrambi avrebbero eseguito la stessa azione. Per lo meno, Eclipse non è d'accordo. Qualcuno sa qual è la differenza, e dove può essere visto altrimenti, o perché sarebbe utile accettare l'esempio precedente e respingere quest'ultimo?
Modifica: ok, quindi è opportuno quando si sta inizializzando, ma non vedo alcuna ambiguità ... la JVM non potrebbe interpretare il tipo di variabile dal nome della variabile (nel caso di ridefinizione variabili già inizializzate) o al momento del ritorno (in cui la JVM potrebbe solo guardare il tipo di ritorno della funzione)? Cosa rende l'inizializzazione un caso speciale di una regola che proibisce il tipo implicito? Ciò che rende la regola generale richiede un tipo esplicito?
"È accettabile solo durante una dichiarazione." Perché? Perché non durante una dichiarazione di reso? –
@JohnP Perché la lingua non lo consente. Per quanto ne so, non ci sono buone ragioni contro di esso (suppongo che il compilatore potrebbe dover fare un po 'più di inferenza di tipo per garantire che la creazione sia sicura). – Jeffrey