자바, C++ enum

2022. 4. 10. 23:09프로그래밍

728x90

C++ 에서는 다음과 같이 enum 타입을 선언하고,

enum GeoSystem {
  kGeographic = 0,
  kTmWest = 1,
  kTmMid = 2,
  kTmEast = 3,
  kKatec = 4,
  kUtm52 = 5,
  kUtm51 = 6
};

다음 배열을 선언해서 사용하는 것이 가능 합니다.

double m_arScaleFactor[7];
...
m_arScaleFactor[kGeographic] = 1;

하지만, 자바에서는 약간 다른 방식을 사용 해야 한다는 것입니다.

다음과 같이 enum 을 선언하고,

enum GeoSystem {
  kGeographic(0),
  kTmWest(1),
  kTmMid(2),
  kTmEast(3),
  kKatec(4),
  kUtm52(5),
  kUtm51(6);
  
  private final int value;     
  // 생성자   
  private GeoSystem( int v ) {  this.value = v; }     
  public int value()         {  return value;   }
 };

아래와 같이 사용 하면 될 것 같습니다.

private static double[] m_arScaleFactor = new double[7];

m_arScaleFactor[GeoSystem.kGeographic.value] = 1;
m_arScaleFactor[GeoSystem.kGeographic.value()] = 1;

자바 1.5 이상 버전에서 사용 가능 합니다.

728x90