자바에서 enum 사용

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

728x90

자바의 enum 타입을 다음과 같이 사용해 보았습니다. 나름 고민해서 사용해 보긴 했지만 여러가지 사용법이 존재 할 것 같네요...

 

 

우선 GeoProjection 클래스에 열거형을 다음과 같이 선언 했다고 생각 해 봅시다.

public class GeoProjection
{
 public enum GeoEllips
 {
  kBessel1984(0),
  kWgs84(1);
  
  final int val;     
   
  GeoEllips( int v ) {         this.val = v;     }     
  public int value()   {          return val;      }
 };
 
 public enum GeoSystem {
  kGeographic(0),
  kTmWest(1),
  kTmMid(2),
  kTmEast(3),
  kKatec(4),
  kUtm52(5),
  kUtm51(6);
  
  final int val;     
   
  GeoSystem( int v ) {         this.val = v;     }     
  public int value()   {          return val;      }
 };
 
}

 

그러면 위의 패키지 내의 두개의 클래스, GeoProjection와 GeoSystem 클래스를 다른 패키지에서 사용한다고 했을 때

 

즉 MapConvDlg 다이얼로그 클래스가 사용 한다면 어떻게 사용해야 할까라는 물음에 대한 자문 자답입니다?

(같은 패키지 내나 다른 패키지 일때도 마찬가지 인거 같습니다)

 

 

1. 일단 다음과 같이 패키지를 임포트 하고(패키지 명은 임의의 이름입니다)

import com.tobee.gis.coordconv.GeoProjection.GeoEllips;

2.다음과 같이 선언 해 줍니다.

private GeoEllips m_eSrcEllips;

 

3. 할당은 다음과 같이 해 주도록 합니다.

m_eSrcEllips = GeoEllips.kBessel1984;

 

전체 코드는 다음과 같습니다.

package com.tobee.gis.ui;

public class MapConvDlg extends javax.swing.JDialog
{

  private GeoEllips m_eSrcEllips;
  private GeoSystem m_eSrcSystem;
  private GeoEllips m_eDstEllips;
  private GeoSystem m_eDstSystem;

  private void setEllpsCombo(String cmbType)
  {
    String cmbtype = cmbType;
    
    if(cmbtype.equals("Bessel 1841"))
    {
       m_eSrcEllips = GeoEllips.kBessel1984;
    }
    else if(cmbtype.equals("WGS84"))//Bessel 1841
    {
       m_eSrcEllips = GeoEllips.kWgs84;
    }
    else
    {
       System.out.println("[setEllpsCombo] ERROR!!!");
    }
  }
}

 

switch 문으로 사용할 시에는 다음 처럼 될 것입니다.

switch(m_eSrcEllips)
{

  case GeoEllips.kWgs84:
    System.out.println(....);
    break;
  case kBessel1984:
    System.out.println(....);
    break;
}

이상.

728x90