Tôi nhận được giá trị trả về ở dạng dài hoặc int từ mã Native trong Android, mà tôi muốn chuyển đổi hoặc khớp với enum, cho mục đích xử lý. Có thể không? Làm cách nào?Cách đối sánh int với enum
Trả lời
Nếu bạn có quyền kiểm soát đầy đủ các giá trị và sự đếm, và họ đang tuần tự, bạn có thể sử dụng enum giá trị thứ tự:
enum Heyo
{
FirstVal, SecondVal
}
...later
int systemVal = [whatever];
Heyo enumVal = Heyo.values()[systemVal];
int againSystemVal = enumVal.ordinal();
Bạn có thể thiết lập enum của bạn để nó có dài hoặc int được tích hợp vào nó.
ví dụ: Tạo tập tin này ePasswordType.java
public enum ePasswordType {
TEXT(0),
NUMBER(1);
private int _value;
ePasswordType(int Value) {
this._value = Value;
}
public int getValue() {
return _value;
}
public static ePasswordType fromInt(int i) {
for (ePasswordType b : ePasswordType .values()) {
if (b.getValue() == i) { return b; }
}
return null;
}
}
Sau đó bạn có thể truy cập các giá trị được gán như thế này:
ePasswordType var = ePasswordType.NUMBER;
int ValueOfEnum = var.getValue();
Để có được enum khi bạn chỉ biết int, sử dụng này:
ePasswordType t = ePasswordType.fromInt(0);
Enums in java are ve ry mạnh mẽ vì mỗi giá trị có thể là lớp riêng của nó.
Đây là một cách tiếp cận tốt hơn nhiều so với sử dụng thứ tự(). Để tìm hiểu lý do, hãy đọc Hiệu quả Java –
@Kuffs: Có cách nào thích hợp để ** đặt ** enum bằng cách sử dụng giá trị số nguyên không? – Levit
@Levit Giá trị được đặt ở thời gian thiết kế không chạy thời gian. Nếu bạn có nghĩa là lấy giá trị enum khi bạn chỉ biết int, xem câu trả lời đã chỉnh sửa của tôi. – Kuffs
- 1. So sánh Integer đối tượng vs int
- 2. Chuyển đổi enum để int
- 3. Cách ánh xạ int vào enum với EF
- 4. Java: Enum vs. Int
- 5. So sánh mã lỗi enum với std :: error_code
- 6. Enum từ chuỗi, int, v.v.
- 7. So sánh hai đối tượng có chứa các giá trị enum loại enum cùng
- 8. Bắt enum gắn liền với giá trị int
- 9. Java Enum trả về Int
- 10. Hãy so sánh int và unsigned int
- 11. So sánh đối tượng và int trong Java 7
- 12. Là sizeof (enum) == sizeof (int), luôn luôn?
- 13. So sánh hai loại enum * tương đương?
- 14. C# Enum hoặc int hằng số
- 15. Nhận giá trị enum int bởi chuỗi
- 16. Cast Int to Generic Enum trong C#
- 17. ISSUE: Mysql chuyển đổi Enum thành Int
- 18. Chuỗi câu lệnh .NET C# switch so sánh với enum so sánh
- 19. So sánh thứ hạng trong một enum
- 20. Cách nào tốt hơn để so sánh Flags Enum?
- 21. Objective C: Unsigned int so sánh
- 22. làm thế nào để so sánh giá trị enum
- 23. So sánh BigDecimal và int trong Java
- 24. Đối sánh mẫu, F # so với Erlang
- 25. int vs Integer so sánh Java
- 26. So sánh 'int' thành 'null' biên dịch
- 27. Làm cách nào để chuyển đổi int thành enum và chuỗi bằng cách sử dụng automapper và int từ DB
- 28. tăng int đối tượng
- 29. Làm cách nào để xác định xem giá trị Enum có một hoặc nhiều giá trị được so sánh với?
- 30. So sánh hiệu suất của int và số nguyên
Sử dụng thứ tự để có được một "giá trị" cho một enum không được khuyến khích. Thay vào đó, hãy sử dụng trường mẫu thay thế. Xem khoản 31 trong ấn bản thứ hai của Java hiệu quả của Josh Bloch. –