Biến số final
phải được khởi tạo tại khai báo hoặc trong hàm tạo.
Nếu nó chưa được khởi tạo khi hàm tạo trả về, nó có thể không bao giờ được khởi tạo và có thể vẫn là một biến chưa được khởi tạo. Trình biên dịch không thể chứng minh nó sẽ được khởi tạo, và do đó ném một lỗi.
Wikipedia excerpt này giải thích nó cũng:
Một biến cuối cùng chỉ có thể được khởi tạo một lần, hoặc thông qua một initializer hoặc một câu lệnh gán. Nó không cần phải được khởi tạo tại điểm khai báo: đây được gọi là biến "trống cuối cùng".Một biến mẫu trống cuối cùng của một lớp chắc chắn phải được gán ở cuối mỗi hàm tạo của lớp mà nó được khai báo; tương tự, một biến tĩnh cuối cùng trống phải được gán chắc chắn trong một trình khởi tạo tĩnh của lớp mà nó được khai báo: nếu không, một lỗi biên dịch sẽ xảy ra trong cả hai trường hợp. (Lưu ý: Nếu biến là một tài liệu tham khảo, điều này có nghĩa rằng biến thể không được tái ràng buộc để tham khảo đối tượng khác Nhưng đối tượng mà nó tham chiếu vẫn có thể thay đổi, nếu nó đã được ban có thể thay đổi..)
Nguồn
2012-07-05 13:20:21
Một tài sản của từ khóa thức là nó đảm bảo rằng một biến không thể thay đổi trạng thái sau khi nó đã được khởi tạo. Nó buộc người dùng khởi tạo khi nó được khai báo hoặc trong một hàm tạo. –
Vui lòng xem [này] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.4). – user1329572
Trường 'final' phải được đặt một lần và chỉ một lần. Trình biên dịch chỉ có thể chắc chắn đây là trường hợp nếu nó được đặt trong một hàm tạo. –