5

私は異なるページで2つのクラスを持っています。

オブジェクト クラス:

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

エラーは 2 つあります。1 つはタイプを解決できません、もう 1 つはインポートできません。私に何ができる?初めて列挙型を使用しましたが、わかります。

4

3 に答える 3

10

enumsステートメントを機能させるには、パッケージで宣言する必要があります。つまり、package-private (デフォルト パッケージ) クラスのクラスからimportインポートすることはできません。enums列挙型をパッケージに移動します

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

または、完全修飾を使用できますenum

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

import ステートメントなしで

于 2013-07-25T12:36:38.703 に答える
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();
    }
}
于 2013-07-25T12:48:24.290 に答える
2

static キーワードは enum には影響しません。外部クラス参照を使用するか、独自のファイルに列挙型を作成してください。

于 2013-07-25T14:00:28.027 に答える