2013-07-25 57 views
2

我有2個分類在不同的頁面。Enum無法解析? Java

對象類:

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

錯誤有兩個,一個是類型解決不了另一種是不傾斜導入。我能做什麼?我第一次使用枚舉,但你看到。

+0

查看Reimeus的答案應該被接受(包含'enum'的類不能在默認包中)。或[看這裏](http://stackoverflow.com/questions/283816/how-to-access-java-classes-in-the-default-package)。 – mins

回答

9

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語句

2

對於靜態的方式在靜態import語句給予適當的封裝結構

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

static關鍵字沒有效果關於枚舉。使用外部類引用或在其自己的文件中創建枚舉。