Hướng dẫn enum in javascript w3schools - enum trong javascript w3schools


Enum là một "lớp" đặc biệt đại diện cho một nhóm các hằng số (các biến không thể thay đổi).enum is a special "class" that represents a group of constants (unchangeable variables).

Enums có hai hương vị stringnumeric. Hãy bắt đầu với số.


Enum số - mặc định

Theo mặc định, Enums sẽ khởi tạo giá trị đầu tiên thành 0 và thêm 1 vào mỗi giá trị bổ sung:

Thí dụ

enum cardinaldirections {& nbsp; & nbsp; North, & nbsp; & nbsp; East, & nbsp; & nbsp; South, & nbsp; & nbsp; West} hãy để hiện tại // log 0 console.log (currentDirection); // Ném lỗi là 'North' không phải là một trình độ hợp lệ hiện tạiDirection = 'North'; // Lỗi: "North" không thể gán cho nhập 'Cardinaldirections'.
  North,
  East,
  South,
  West
}
let currentDirection = CardinalDirections.North;
// logs 0
console.log(currentDirection);
// throws error as 'North' is not a valid enum
currentDirection = 'North'; // Error: "North" is not assignable to type 'CardinalDirections'.

Hãy tự mình thử »


Enum số - khởi tạo

Bạn có thể đặt giá trị của enum số đầu tiên và tự động tăng từ đó:

Thí dụ

enum cardinaldirections {& nbsp; & nbsp; North, & nbsp; & nbsp; East, & nbsp; & nbsp; South, & nbsp; & nbsp; West} hãy để hiện tại // log 0 console.log (currentDirection); // Ném lỗi là 'North' không phải là một trình độ hợp lệ hiện tạiDirection = 'North'; // Lỗi: "North" không thể gán cho nhập 'Cardinaldirections'.
  North = 1,
  East,
  South,
  West
}
// logs 1
console.log(CardinalDirections.North);
// logs 4
console.log(CardinalDirections.West);

Hãy tự mình thử »


Enum số - khởi tạo

Bạn có thể đặt giá trị của enum số đầu tiên và tự động tăng từ đó:

Thí dụ

enum cardinaldirections {& nbsp; & nbsp; North, & nbsp; & nbsp; East, & nbsp; & nbsp; South, & nbsp; & nbsp; West} hãy để hiện tại // log 0 console.log (currentDirection); // Ném lỗi là 'North' không phải là một trình độ hợp lệ hiện tạiDirection = 'North'; // Lỗi: "North" không thể gán cho nhập 'Cardinaldirections'.
  NotFound = 404,
  Success = 200,
  Accepted = 202,
  BadRequest = 400
}
// logs 404
console.log(StatusCodes.NotFound);
// logs 200
console.log(StatusCodes.Success);

Hãy tự mình thử »



Enum số - khởi tạo

Bạn có thể đặt giá trị của enum số đầu tiên và tự động tăng từ đó:

Thí dụ

enum cardinaldirections {& nbsp; & nbsp; North, & nbsp; & nbsp; East, & nbsp; & nbsp; South, & nbsp; & nbsp; West} hãy để hiện tại // log 0 console.log (currentDirection); // Ném lỗi là 'North' không phải là một trình độ hợp lệ hiện tạiDirection = 'North'; // Lỗi: "North" không thể gán cho nhập 'Cardinaldirections'.
  North = 'North',
  East = "East",
  South = "South",
  West = "West"
};
// logs "North"
console.log(CardinalDirections.North);
// logs "West"
console.log(CardinalDirections.West);

Hãy tự mình thử »

Enum số - khởi tạo


Bạn có thể đặt giá trị của enum số đầu tiên và tự động tăng từ đó:



Từ khóa Java


Thí dụ

Tạo một

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1 với các hằng số (biến không thể thay đổi):constants (unchangeable variables):

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

Bạn có thể truy cập hằng số

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1 với cú pháp DOT:dot syntax:

Level myvar = level.medium;

Hãy tự mình thử »


Định nghĩa và cách sử dụng

Từ khóa

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1 tuyên bố một loại được liệt kê (không thể thay đổi).

Enum là một "lớp" đặc biệt đại diện cho một nhóm các hằng số (các biến không thể thay đổi, như các biến cuối cùng).

Để tạo một enum, hãy sử dụng từ khóa

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1 (thay vì lớp hoặc giao diện) và tách các hằng số bằng dấu phẩy. Lưu ý rằng chúng nên có chữ hoa.

Sự khác biệt giữa enum và các lớp học

Một

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1 có thể, giống như
public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
6, có các thuộc tính và phương thức. Sự khác biệt duy nhất là hằng số enum là
public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
7,
public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
8 và
public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
9 (không thể thay đổi - không thể bị ghi đè).

Một

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1 không thể được sử dụng để tạo các đối tượng và nó không thể mở rộng các lớp khác (nhưng nó có thể thực hiện các giao diện).

Sử dụng Enums khi bạn có các giá trị mà bạn biết sẽ không thay đổi, như ngày tháng, ngày, màu sắc, bộ bài của thẻ, v.v.


Các trang liên quan

Đọc thêm về Enums trong hướng dẫn Java của chúng tôi.


Từ khóa Java


Loại Enum là một loại dữ liệu đặc biệt cho phép một biến trở thành một tập hợp các hằng số được xác định trước. Biến phải bằng một trong các giá trị đã được xác định trước cho nó. Các ví dụ phổ biến bao gồm các hướng la bàn (giá trị của Bắc, Nam, Đông và Tây) và những ngày trong tuần.

Bởi vì chúng là hằng số, tên của các trường của một loại enum nằm trong các chữ cái viết hoa.

Trong ngôn ngữ lập trình Java, bạn xác định một loại Enum bằng cách sử dụng từ khóa

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1. Ví dụ: bạn sẽ chỉ định loại enum ngày trong tuần như:

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}

Bạn nên sử dụng các loại Enum bất cứ khi nào bạn cần đại diện cho một tập hợp các hằng số cố định. Điều đó bao gồm các loại enum tự nhiên như các hành tinh trong hệ mặt trời và bộ dữ liệu của chúng tôi nơi bạn biết tất cả các giá trị có thể có tại thời điểm biên dịch, ví dụ, các lựa chọn trên menu, cờ dòng lệnh, v.v.

Dưới đây là một số mã chỉ cho bạn cách sử dụng

public class EnumTest {
    Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;
                    
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
                         
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;
                        
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
2 enum được xác định ở trên:

public class EnumTest {
    Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;
                    
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
                         
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;
                        
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}

Đầu ra là:

Mondays are bad.
Midweek days are so-so.
Fridays are better.
Weekends are best.
Weekends are best.

Các loại enum ngôn ngữ lập trình Java mạnh hơn nhiều so với các đối tác của họ trong các ngôn ngữ khác. Tuyên bố

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY, SATURDAY 
}
1 xác định một lớp (được gọi là loại enum). Cơ thể lớp Enum có thể bao gồm các phương thức và các trường khác. Trình biên dịch tự động thêm một số phương thức đặc biệt khi nó tạo ra một enum. Ví dụ, chúng có phương thức
public class EnumTest {
    Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;
                    
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
                         
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;
                        
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
4 tĩnh trả về một mảng chứa tất cả các giá trị của enum theo thứ tự chúng được khai báo. Phương pháp này thường được sử dụng kết hợp với cấu trúc for-ave để lặp lại các giá trị của một loại enum. Ví dụ: mã này từ ví dụ lớp
public class EnumTest {
    Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;
                    
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
                         
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;
                        
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
5 bên dưới lặp lại trên tất cả các hành tinh trong hệ mặt trời.

for (Planet p : Planet.values()) {
    System.out.printf("Your weight on %s is %f%n",
                      p, p.surfaceWeight(mass));
}

Trong ví dụ sau,

public class EnumTest {
    Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;
                    
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
                         
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;
                        
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
5 là một loại enum đại diện cho các hành tinh trong hệ mặt trời. Chúng được xác định với các đặc tính khối lượng và bán kính không đổi.

Mỗi hằng số enum được khai báo với các giá trị cho các tham số khối và bán kính. Các giá trị này được truyền cho hàm tạo khi hằng số được tạo. Java yêu cầu các hằng số được xác định trước, trước bất kỳ trường hoặc phương thức nào. Ngoài ra, khi có các trường và phương pháp, danh sách các hằng số enum phải kết thúc bằng dấu chấm phẩy.


Lưu ý: & nbsp; hàm tạo cho một loại enum phải là truy cập gói hoặc truy cập riêng tư. Nó tự động tạo ra các hằng số được xác định ở đầu cơ thể enum. Bạn không thể tự gọi một nhà xây dựng enum. The constructor for an enum type must be package-private or private access. It automatically creates the constants that are defined at the beginning of the enum body. You cannot invoke an enum constructor yourself.


Ngoài các thuộc tính và hàm tạo của nó,

public class EnumTest {
    Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;
                    
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
                         
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;
                        
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
5 còn có các phương pháp cho phép bạn lấy lại trọng lực bề mặt và trọng lượng của một vật thể trên mỗi hành tinh. Dưới đây là một chương trình mẫu lấy trọng lượng của bạn trên Trái đất (trong bất kỳ đơn vị nào) và tính toán và in trọng lượng của bạn trên tất cả các hành tinh (trong cùng một đơn vị):

public enum Planet {
    MERCURY (3.303e+23, 2.4397e6),
    VENUS   (4.869e+24, 6.0518e6),
    EARTH   (5.976e+24, 6.37814e6),
    MARS    (6.421e+23, 3.3972e6),
    JUPITER (1.9e+27,   7.1492e7),
    SATURN  (5.688e+26, 6.0268e7),
    URANUS  (8.686e+25, 2.5559e7),
    NEPTUNE (1.024e+26, 2.4746e7);

    private final double mass;   // in kilograms
    private final double radius; // in meters
    Planet(double mass, double radius) {
        this.mass = mass;
        this.radius = radius;
    }
    private double mass() { return mass; }
    private double radius() { return radius; }

    // universal gravitational constant  (m3 kg-1 s-2)
    public static final double G = 6.67300E-11;

    double surfaceGravity() {
        return G * mass / (radius * radius);
    }
    double surfaceWeight(double otherMass) {
        return otherMass * surfaceGravity();
    }
    public static void main(String[] args) {
        if (args.length != 1) {
            System.err.println("Usage: java Planet ");
            System.exit(-1);
        }
        double earthWeight = Double.parseDouble(args[0]);
        double mass = earthWeight/EARTH.surfaceGravity();
        for (Planet p : Planet.values())
           System.out.printf("Your weight on %s is %f%n",
                             p, p.surfaceWeight(mass));
    }
}

Nếu bạn chạy

public class EnumTest {
    Day day;
    
    public EnumTest(Day day) {
        this.day = day;
    }
    
    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY:
                System.out.println("Mondays are bad.");
                break;
                    
            case FRIDAY:
                System.out.println("Fridays are better.");
                break;
                         
            case SATURDAY: case SUNDAY:
                System.out.println("Weekends are best.");
                break;
                        
            default:
                System.out.println("Midweek days are so-so.");
                break;
        }
    }
    
    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();
    }
}
8 từ dòng lệnh với đối số là 175, bạn sẽ nhận được đầu ra này:

$ java Planet 175
Your weight on MERCURY is 66.107583
Your weight on VENUS is 158.374842
Your weight on EARTH is 175.000000
Your weight on MARS is 66.279007
Your weight on JUPITER is 442.847567
Your weight on SATURN is 186.552719
Your weight on URANUS is 158.397260
Your weight on NEPTUNE is 199.207413