Подсчет количества констант в enum. Где ошибка?

Дано скрытое перечисление с некоторыми константами в верхнем регистре.

Напишите программу, которая подсчитывает, сколько констант в перечислении начинается сo «STAR».

public class TheSecretEnumeration {
    public static void main(String[] args) {
        int count = 0;
        for (Secret secret : Secret.values()) {
            if (secret.startsWith("STAR")) {
                count++;
                System.out.println(count);
            }
        }
    }
}

enum Secret {
    STAR, CRASH, START;
    String str;

    Secret(String str) {
        this.str = str;
    }

    Secret() {
    }

    public boolean startsWith(String star) {
        return true;
    }
}

В задаче дан шаблон:


public class Main {

    public static void main(String[] args) {

    }
}

/* At least two constants start with STAR
enum Secret {
    STAR, CRASH, START, // ...
}
*/

Ответы (3 шт):

Автор решения: Igor
    int count = 0;
    for (Secret secret : Secret.values()) {
        if (secret.name().startsWith("STAR")) {
            count++;
        }
    }
    System.out.println(count);

https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#name()

→ Ссылка
Автор решения: dmtr

Пока писал ответ, увидел, что @Igor уже обновил свой ответ.

Добавлю, что можно так же через

secret.toString().startsWith("STAR");

но это не есть лучшая практика, т.к. метод toString() может быть переопределен для значений Enum, и его результат к тому моменту уже может не соответствовать ожиданиям.

→ Ссылка
Автор решения: komrad.rediska2
public class Main {

    public static void main(String[] args) {

        int count = 0;
        for (Secret secret : Secret.values()) {
            if (secret.toString ().startsWith("STAR")) {
                count++;
            }
        }
        System.out.println(count);
    }
}

enum Secret {
    STAR, CRASH, START, // ...
}

Из-за чего появляется ошибка

Compilation error Main.java:18: error: duplicate class: Secret enum Secret {

→ Ссылка