Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enum can not be resolved? Java

I have 2 classed at different pages.

The object class:

public class Sensor {

  Type type;
  public static enum Type
  {
        PROX,SONAR,INF,CAMERA,TEMP;
  }

  public Sensor(Type type)
  {
  this.type=type;
  }

  public void TellIt()
  {
      switch(type)
      {
      case PROX: 
          System.out.println("The type of sensor is Proximity");
          break;
      case SONAR: 
          System.out.println("The type of sensor is Sonar");
          break;
      case INF: 
          System.out.println("The type of sensor is Infrared");
          break;
      case CAMERA: 
          System.out.println("The type of sensor is Camera");
          break;
      case TEMP: 
          System.out.println("The type of sensor is Temperature");
          break;
      }
  }

  public static void main(String[] args)
    {
        Sensor sun=new Sensor(Type.CAMERA);
        sun.TellIt();
    }
    }

Main class:

import Sensor.Type;

public class MainClass {

public static void main(String[] args)
{
    Sensor sun=new Sensor(Type.SONAR);
    sun.TellIt();
}

Errors are two, one is Type can not be resolved other is cant not import. What can i do? I first time used enums but you see.

like image 275
CursedChico Avatar asked Jul 25 '13 12:07

CursedChico


Video Answer


2 Answers

enums are required to be declared in a package for import statements to work, i.e. importing enums from classes in package-private (default package) classes is not possible. Move the enum to a package

import static my.package.Sensor.Type;
...
Sensor sun = new Sensor(Type.SONAR);

Alternatively you can use the fully qualified enum

Sensor sun = new Sensor(Sensor.Type.SONAR);

without the import statement

like image 184
Reimeus Avatar answered Sep 19 '22 03:09

Reimeus


The static keyword has no effect on enum. Either use the outer class reference or create the enum in its own file.

like image 35
ThePoltergeist Avatar answered Sep 22 '22 03:09

ThePoltergeist