enum в отдельном классе - PullRequest
       3

enum в отдельном классе

3 голосов
/ 10 марта 2011

Есть ли способ поставить этот тест в отдельный класс?Я пытался, но безуспешно.

public class TrafficLightprj 
{
    public enum TrafficLight 
    {  
        RED(1),  
        GREEN(2),  
        YELLOW(3);

        private final int duration; 

        TrafficLight(int duration) { 
            this.duration = duration; 
        }  

        public int getDuration() { 
            return this.duration; 
        } 


        public static void main(String[] args) 
        {
            for(TrafficLight light: TrafficLight.values())
            {
               System.out.println("The traffic light value is: " +light);
               System.out.println("The duration of that trafic light value is: " + light.getDuration());
            }
        }   
    }
}

Ответы [ 4 ]

13 голосов
/ 10 марта 2011

Я не уверен, что понимаю, что вы имеете в виду в своем вопросе, поэтому я отвечу на то, что я думаю вы спрашиваете.

Перечисление может быть собственным файлом в Java. Например, у вас может быть файл с именем TrafficLight , который внутри:

public enum TrafficLight {  
    RED(1),  
    GREEN(2),  
    YELLOW(3);

    private final int duration; 

    TrafficLight(int duration) { 
        this.duration = duration; 
    }  

    public int getDuration() { 
        return this.duration; 
    } 
}

Затем вы можете использовать это перечисление из вашего тестового проекта ( TrafficLightPrj.java ). Вот так:

public class TrafficLightprj {

    public static void main(String[] args) {
        for(TrafficLight light: TrafficLight.values()) {
            System.out.println("The traffic light value is: " +light);
            System.out.println("The duration of that trafic light value is: " +light.getDuration());
        }
    }
}
2 голосов
/ 10 марта 2011

Вам нужно поместить его в другой файл .java.В одном файле .java не может быть более одного открытого класса / перечисления.

TrafficLightprj.java

public class TrafficLightprj {

    public static void main(String[] args) {
        for(TrafficLight light: TrafficLight.values()){
            System.out.println("The traffic light value is: " +light);
            System.out.println("The duration of that trafic light value is: "  +light.getDuration());
        }
    }
}

TrafficLight.java

public enum TrafficLight {  
    RED(1),  
    GREEN(2),  
    YELLOW(3);

    private final int duration; 

    TrafficLight(int duration) { 
        this.duration = duration; 
    }  

    public int getDuration() { 
        return this.duration; 
    }
} 
1 голос
/ 10 марта 2011

Конечно, но вам нужно указать имя класса enum.TrafficLightprj.TrafficLight вместо TrafficLight.Или, я думаю, импортируйте его.

Я не большой поклонник не частных вложенных классов и предлагаю сделать перечисление на высшем уровне.

0 голосов
/ 10 марта 2011

Если ваш вопрос: "Как получить вложенное перечисление в другом исходном файле?"

Это было бы возможно с частичными классами, но это не поддерживается в java .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...