Ошибка компиляции Java для типа enum «Открытый тип EngineType должен быть определен в его собственном файле Car.java» - PullRequest
0 голосов
/ 09 марта 2019

Я новичок в Java, и это второй раз, когда я пишу код в нем.У меня есть ошибка, утверждающая, что открытый тип EngineType должен быть определен в своем собственном файле.EngineType является типом enum, и я упомянул его вне класса Car, с моей точки зрения ориентированного программирования, как бывший студент C ++, все должно быть в порядке.Можете ли вы взглянуть на мой код и помочь мне?Большое спасибо за ваше желание помочь мне.

       package ro.ase.classes1;

    import ro.ase.interfaces1.mobility;

    public final class Car extends vehicle implements mobility,Cloneable
    {
        public final int maxNbofkm=1_000_000;  
        public Enginetype Enginetype;
        private float speed;

        public Car()
        {
            super();//it s mandatory to be on first line of the constructor
            Enginetype=Enginetype.gas;
            speed=0;
        }

        public Car(String _name,Enginetype _enginetype,float _speed)
        {
            super(_name,true);//call the base constructor
            Enginetype=_enginetype;
            speed=_speed;
        }

        @Override
        public void DisplaySpeed() {
            System.out.println(String.format("The %s car runs with %f km/h", Enginetype.toString(),speed ));
        }

        @Override
        public void Start() {

        }

        @Override
        public void Stop() {

            System.out.println("The"+Enginetype.toString()+"car has stopped");
        }

    }
enum Enginetype{gas, diesel,hybrid,electric}

КОД С ОШИБКОЙ

1 Ответ

2 голосов
/ 09 марта 2019

Проблема в том, что ваш класс Enum определен как открытый за пределами вашего класса Car - использование двух открытых классов в одном файле недопустимо в Java. Таким образом, вы можете исправить это одним из трех способов:

  1. Сделайте Enum приватным.
  2. Поместить общедоступный Enum в отдельный файл.
  3. Поместите Enum в класс Car.

Например:

Дело 1:

public class VowelPrint  {

    public static void main(String[] args) {
        System.out.println(Vowels.A);
    }
}

enum Vowels {
    A, B, C;
}

Дело 3:

public class VowelPrint  {

    public enum Vowels { //Can also be private
        A, B, C;
    }  
    public static void main(String[] args) {
        System.out.println(Vowels.A);
    }
}
...