Jeśli definiowania zmiennej, wydaje się być całkowicie poprawny zadeklarować/zdefiniować zmienną w następujący sposób:W języku Java, kiedy jest niepoprawna tablica {a, b, c, ...} i dlaczego?
double[][] output = {{0,0},{1,0}};
Ale jeśli powrocie wartość wydaje się być niepoprawny napisać następujące :
public double[] foo(){
return {0,1,2}
}
Myślałbym, że wewnętrznie, obaj wykonaliby tę samą akcję. Eclipse, przynajmniej, nie zgadza się. Czy ktokolwiek wie, na czym polega różnica i gdzie indziej może być widziany, lub dlaczego korzystne byłoby przyjęcie poprzedniego przykładu i odrzucenie tego ostatniego?
Edycja: dobra, więc jest to właściwe podczas inicjalizacji, ale nie widzę żadnej niejasności ... JVM nie może interpretować typu zmiennej z nazwy zmiennej (w przypadku przedefiniowania) już zainicjowane zmienne) lub po powrocie (gdzie JVM może po prostu przyjrzeć się typowi zwracanej funkcji)? Co powoduje, że inicjalizacja jest specjalnym przypadkiem reguły, która uniemożliwiłaby typ niejawny? Co sprawia, że ogólna reguła wymaga jawnego typu?
"Jest to dopuszczalne tylko podczas deklaracji." Czemu? Dlaczego nie podczas zwrotu? –
@JohnP Ponieważ język na to nie pozwala. O ile mi wiadomo, nie ma dobrego argumentu przeciwko niemu (domyślam się, że kompilator musiałby wykonać nieco więcej wnioskowania o typie, aby upewnić się, że tworzenie jest bezpieczne). – Jeffrey