Nếu bạn đang xác định một biến, nó dường như là hoàn toàn hợp lệ để khai báo/định nghĩa một biến như sau:Trong Java, khi nào mảng {a, b, c, ...} viết tắt là không phù hợp và tại sao?
double[][] output = {{0,0},{1,0}};
Nhưng nếu bạn đang trở về một giá trị, nó dường như là không hợp lệ để viết như sau :
public double[] foo(){
return {0,1,2}
}
Tôi đã nghĩ rằng nội bộ, cả hai đều sẽ thực hiện cùng một hành động. Eclipse, ít nhất, không đồng ý. Có ai biết sự khác biệt là gì, và nơi nào khác nó có thể được nhìn thấy, hoặc tại sao nó sẽ có lợi để chấp nhận ví dụ cũ và từ chối sau này?
Chỉnh sửa: OK, vì vậy nó phù hợp khi bạn khởi tạo, nhưng tôi không thấy bất kỳ sự mơ hồ nào ... JVM không thể giải thích loại biến từ tên biến (trong trường hợp xác định lại đã được khởi tạo biến) hoặc khi trở về (nơi JVM chỉ có thể nhìn vào kiểu trả về của hàm)? Điều gì làm cho khởi tạo một trường hợp đặc biệt của một quy tắc mà sẽ cấm loại ngầm? Điều gì làm cho quy tắc chung yêu cầu loại rõ ràng?
"Chỉ chấp nhận được trong một tuyên bố". Tại sao? Tại sao không trong một tuyên bố trở lại? –
@JohnP Vì ngôn ngữ không cho phép. Theo tôi biết, không có trường hợp tốt chống lại nó (tôi đoán trình biên dịch có thể phải làm một chút suy luận kiểu hơn để đảm bảo việc tạo ra là an toàn). – Jeffrey