정수리
309
2020-11-20 13:38:34 작성 2020-11-20 18:12:55 수정됨
2
130

자바 1.6버전에서의 switch문 사용법 관련


운영할려던 환경(1.6)과 테스트 환경(1.8)이 동일하다고 생각하여


개발하였는데 배포 후 프로그램을 돌릴려고 하니 운영환경의 버전이 낮아


프로그램이 돌릴수 없더라구요


그래서 다시 버전에 맞게  수정 중인데


switch문 사용시 


1.6버전에는 switch문의 매개변수에 string형은 변수를 사용할수 없다는 걸을 최근에 알았네요 ㅜㅜ


계속 php로만 개발하다가 처음으로 java 학습후 프로그램을 개발하는 상황인데 


조금 당황하였습니다.


구글링 통해 검색해보니


1.6버전에는 enum을 사용하여 상수로 값을 정해놓고


switch문에서 enum의 상수를 가져와서 사용하는 방법밖에 없더라구요.


제가 사용하려는 방법이


DB에서 가져온 데이터 값에 따라 

HashMap에 데이터를 넣을려고 합니다.


이와 같은 상황에서도 enum으로 상수를 정해놓고 가져와서 사용해야 하는걸까요?

switch (sdto.getSaup_gubun()//string) {
				case "xx":

					switch (sdto.getAllim()//string) {

					case "xxxxx":

						sms_sdto.put("xxxxxx", sdto);

						break;

					case "xxxx":

						sms_sdto.put("xxxxx", sdto);
						break;

					case "xxxxx":

						sms_sdto.put("xxxxxxg", sdto);
						break;

					case "xxxxx":

						sms_sdto.put("xxxxx", sdto);
						break;

					case "xxxxx":

						sms_sdto.put("xxxxx", sdto);
						break;
					}

					break;





0
  • 답변 2

  • 컴포지트
    1k
    2020-11-20 13:51:39

    사전 용도의 HashMap 구성하면 더욱 간단하고 switch 효과도 있습니다.

    자바 7부터 switch 문에 문자열 지원되지만 그것보다 제가 애용하는 방법이죠.

    // 자바 7부터 생성자에 제네릭 생략해도 되지만 1.6이니 아쉽네요.
    Map<String, String> dictionary = new HashMap<String,String>();
    dictionary.put("gubun-a", "column-a");
    dictionary.put("gubun-b", "column-b");
    // ...
    // 한줄로 switch 문 해결
    sms_sdto.put(dictionary.get(some_dto.getGubun()), some_dto.getValue());


  • 정수리
    309
    2020-11-20 14:21:12

    @컴포지트

    정말감사합니다.


    이런방법도 있었네요


    알려주신 방법을 사용하니 코드 양도 훨씬 줄고 switch효과도 좋네요 ㅎㅎ


  • 로그인을 하시면 답변 을 등록할 수 있습니다.