tôi sử dụng enum để thực hiện một vài hằng số:Tôi có thể đặt giá trị khởi động enum trong Java không?
enum ids {OPEN, CLOSE};
giá trị MỞ là số không, nhưng tôi muốn nó như là 100. Có thể?
tôi sử dụng enum để thực hiện một vài hằng số:Tôi có thể đặt giá trị khởi động enum trong Java không?
enum ids {OPEN, CLOSE};
giá trị MỞ là số không, nhưng tôi muốn nó như là 100. Có thể?
Java enums không giống như C hoặc C++ enums, mà thực sự chỉ là nhãn cho số nguyên.
Java enums được triển khai giống như các lớp - và thậm chí chúng có nhiều thuộc tính.
public enum Ids {
OPEN(100), CLOSE(200);
private final int id;
Ids(int id) { this.id = id; }
public int getValue() { return id; }
}
Sự khác biệt lớn là họ đang kiểu an có nghĩa là bạn không cần phải lo lắng về việc gán một enum COLOR cho một biến SIZE.
Xem http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html để biết thêm.
Có. Bạn có thể chuyển các giá trị số cho hàm tạo cho enum, như vậy:
enum Ids {
OPEN(100),
CLOSE(200);
private int value;
private Ids(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
Xem Sun Java Language Guide để biết thêm thông tin.
mát. Có thể trộn không? I E. chỉ gán các số cho các giá trị Enum đã chọn. –
private modifier là thừa cho các hàm tạo enum –
Nếu bạn sử dụng các loại enum rất lớn thì sau đây có thể hữu ích;
whats về việc sử dụng theo cách này:
public enum HL_COLORS{
YELLOW,
ORANGE;
public int getColorValue() {
switch (this) {
case YELLOW:
return 0xffffff00;
case ORANGE:
return 0xffffa500;
default://YELLOW
return 0xffffff00;
}
}
}
chỉ có một phương pháp ..
bạn có thể sử dụng phương pháp tĩnh và vượt qua Enum như tham số như:
public enum HL_COLORS{
YELLOW,
ORANGE;
public static int getColorValue(HL_COLORS hl) {
switch (hl) {
case YELLOW:
return 0xffffff00;
case ORANGE:
return 0xffffa500;
default://YELLOW
return 0xffffff00;
}
}
Lưu ý rằng hai cách này sử dụng ít bộ nhớ hơn và nhiều đơn vị xử lý hơn. t nói đây là cách tốt nhất nhưng nó chỉ là một cách tiếp cận khác.
Tại sao 'getColorValue()' được đồng bộ hóa trong ví dụ thứ hai? – josaphatv
Nó không có ý nghĩa .. Tôi đã xóa nó khỏi mã .. cảm ơn –
Nếu bạn muốn bắt chước enum của C/C++ (cơ sở num và nexts incrementals):
enum ids {
OPEN, CLOSE;
//
private static final int BASE_ORDINAL = 100;
public int getCode() {
return ordinal() + BASE_ORDINAL;
}
};
public class TestEnum {
public static void main (String... args){
for (ids i : new ids[] { ids.OPEN, ids.CLOSE }) {
System.out.println(i.toString() + " " +
i.ordinal() + " " +
i.getCode());
}
}
}
OPEN 0 100 CLOSE 1 101
Dựa trên câu lệnh của bạn, cách tốt nhất là sử dụng java để tạo ra một enum các số nguyên tuần tự (tương tự với một enum C++), cho một chỉ mục thành một mảng hoặc một cái gì đó, viết: enum Ids { NAME (0), TUỔI (1), HEIGHT (2), TRỌNG LƯỢNG (3); } Cảm ơn bạn, -bn –
Có thể, và đặc biệt nếu bạn đã từng sắp xếp các giá trị tích phân ở đâu đó. – lavinio
bạn có thể cho biết cách sử dụng enum này trong một hàm không? –