2011-09-02 45 views
41

Sự khác biệt thực sự giữa các định nghĩa cho setXxx(Color.red)setXxx(Color.RED) là gì?Sự khác biệt giữa Color.red và Color.RED

Tôi đã tìm thấy giải thích sau trên web. Đó là tất cả về quy ước đặt tên?

Java ban đầu được xác định một vài tên màu không đổi theo chữ thường, vi phạm quy tắc đặt tên bằng cách sử dụng chữ hoa cho hằng số. Chúng có sẵn trong tất cả các phiên bản của Java: Color.black, Color.darkGray, Color.gray, Color.lightGray, Color.white, Color.magenta, Color.red, Color.pink, Color.orange, Color.yellow, Color .green, Color.cyan, Color.blue

Java 1.4 thêm tên viết hoa thích hợp cho các hằng số: Color.BLACK, Color.DARK_GRAY, Color.GRAY, Color.LIGHT_GRAY, Color.WHITE, Color.MAGENTA, Color. RED, Color.PINK, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE

+1

Quy ước mã hóa cho các hằng số là UPPER_CASE. Sử dụng chữ hoa thường biểu thị hằng số của nó. –

+8

'RED' có ít nhất ba lần redder hơn' red'. Và giận dữ hơn nhiều. – arserbin3

+2

Quy ước mã hóa cho các hằng số là UPPER_CASE, nhưng lưu ý rằng RED không thực sự là một hằng số, bởi vì nó là một màu, không phải là một nguyên thủy cũng không phải là một enum. Tôi nghĩ định nghĩa của hằng số mọi người sử dụng khi nói về mã không nhất quán với định nghĩa hằng số theo JLS. – Trejkaz

Trả lời

60

Có mã riêng của mình:

public final static Color red = new Color(255, 0, 0); 

public final static Color RED = red; 

các ca trên chữ cái se được giới thiệu trong JDK 1.4 (để phù hợp với quy ước đặt tên của nó, cho biết các hằng số phải là ở trên chữ hoa).

Về bản chất, không có sự khác biệt nào cả (ngoại trừ vỏ thư).


Nếu tôi thực sự dũng cảm, Oracle có thể tự nhiên và xóa các hằng số thấp hơn, nhưng sau đó sẽ phá vỡ tất cả các mã khác được viết trước JDK 1.4. Bạn không bao giờ biết, tôi sẽ đề nghị gắn bó với các chữ in hoa cho các hằng số. Nó đầu tiên phải được phản đối mặc dù (như đã đề cập bởi Andrew Thompson).

+9

Nó làm tôi khó chịu rằng phải mất quá lâu (1.4) cho Sun thừa nhận rằng các trường hợp tương đương thấp hơn không khớp với danh pháp Java chung cho các hằng số. –

21

Thực sự không có sự khác biệt. Xem lớp học Color:

/** 
* The color red. In the default sRGB space. 
*/ 
public final static Color red  = new Color(255, 0, 0); 

/** 
* The color red. In the default sRGB space. 
* @since 1.4 
*/ 
public final static Color RED = red; 
1

Java đã xác định một số tên hằng số màu trong chữ thường, vi phạm quy tắc đặt tên của chữ hoa cho hằng số. Heres mã cho màu đỏ:

public final static Color red = new Color(255, 0, 0); 

Sau đó chúng có cùng màu nhưng in hoa.

public final static Color RED = red; 

Vì vậy, thực sự không có sự khác biệt. Họ đều giống nhau, như bạn có thể nói bằng mã.

public final static Color red = new Color(255, 0, 0); 
public final static Color RED = red; 

Hy vọng điều này sẽ hữu ích!

+3

Vui lòng đăng câu trả lời cho các câu hỏi mới. Câu hỏi này được hỏi vào năm 2011 và cũng đã được trả lời và câu trả lời đã được đánh dấu là đã được chấp nhận.Đọc các câu hỏi mới và cố gắng giúp đỡ những người đó. Chúc mừng. –

Các vấn đề liên quan