枚举无法解决? Java的

时间:2013-07-25 12:34:17

标签: java import enums resolve

我有两个分类在不同页面。

对象类:

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();
    }
    }

主要课程:

import Sensor.Type;

public class MainClass {

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

错误是两个,一个是Type无法解析,另一个是不能导入。我能做什么?我第一次使用枚举,但你看到了。

3 个答案:

答案 0 :(得分:10)

enums需要在包中声明import语句才能工作,即无法从package-private(默认包)类中的类导入enums。将枚举移动到包

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

或者,您可以使用完全限定的enum

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

没有import语句

答案 1 :(得分:2)

对于静态方式,在静态导入语句中给出正确的包结构

import static org.test.util.Sensor.Type;
import org.test.util.Sensor;
public class MainClass {
    public static void main(String[] args) {
        Sensor sun = new Sensor(Type.SONAR);
        sun.TellIt();
    }
}

答案 2 :(得分:2)

static关键字对枚举没有影响。使用外部类引用或在其自己的文件中创建枚举。