์ž๋ฐ”์˜ ์ •์„ - ์—ด๊ฑฐํ˜•(Enums)

๋ธ”๋กœ๊ทธ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค! ๐Ÿก’ integer.blog



์ž๋ฐ”์˜ ์ •์„(๋‚จ๊ถ์„ฑ ์ €) ํ•™์Šต๋‚ด์šฉ ์ •๋ฆฌ

1. ์—ด๊ฑฐํ˜•(Enums)

Java์˜ ์—ด๊ฑฐํ˜•์€ C์–ธ์–ด์˜ ์—ด๊ฑฐํ˜•๊ณผ ๋‹ค๋ฅด๊ฒŒ ์—ด๊ฑฐํ˜•์ด ๊ฐ–๋Š” ๊ฐ’ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํƒ€์ž…๊นŒ์ง€ ๊ด€๋ฆฌํ•œ๋‹ค.
๊ธฐ์กด์˜ ์ƒ์ˆ˜์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด, ํ•ด๋‹น ์ƒ์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผ ํ•ด์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์—ด๊ฑฐํ˜• ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด์˜ ์†Œ์Šค๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

1.1. ์‚ฌ์šฉ๋ฐฉ๋ฒ•

enum ์—ด๊ฑฐํ˜•์ด๋ฆ„ { ์ƒ์ˆ˜๋ช…1, ์ƒ์ˆ˜๋ช…2, ...}
  • ์—ด๊ฑฐํ˜• ์ƒ์ˆ˜ ๊ฐ„์˜ ๋น„๊ต์—๋Š” ==์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. equals()๊ฐ€ ์•„๋‹Œ ==์œผ๋กœ ๋น„๊ต๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ๊ทธ๋งŒํผ ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ๋น„๊ต์—ฐ์‚ฐ์ž(<, >)๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  compareTo()๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • switch๋ฌธ์˜ ์กฐ๊ฑด์‹์— ์—ด๊ฑฐํ˜• ์‚ฌ์šฉํ•˜๊ธฐ
  void move() {
    switch(dir) {
        case EAST: x++; //Direction.EAST๋ผ๊ณ  ์“ฐ๋ฉด ์•ˆ๋œ๋‹ค.(์—ด๊ฑฐํ˜• ์ด๋ฆ„ ์—†์ด ์ƒ์ˆ˜ ์ด๋ฆ„๋งŒ ์ ์–ด์•ผ ํ•œ๋‹ค.)
          break;
        case WEST: x--;
          break;
        case SOUTH: y++;
          break;
        case NORTH: y--;
          break;
    }
  }

1.2. ์—ด๊ฑฐํ˜•์˜ ์ดํ•ด

enum Direction { EAST, WEST, SOUTH, NORTH }
  • ์—ด๊ฑฐํ˜• ์ƒ์ˆ˜ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ Direction ๊ฐ์ฒด์ด๋‹ค.

์œ„์˜ ๋ฌธ์žฅ์„ ํด๋ž˜์Šค๋กœ ์ •์˜ํ•˜๋ฉด,

class Direction {
  static final Direction EAST = new Direction("EAST");
  static final Direction WEST = new Direction("WEST");
  static final Direction SOUTH = new Direction("SOUTH");
  static final Direction NORTH = new Direction("NORTH");
  
  private String name;
  
  private Direction(String name)  {
    this.name = name;
  }
}
  • Directionํด๋ž˜์Šค์˜ static์ƒ์ˆ˜ EAST, WEST, SOUTH, NORTH์˜ ๊ฐ’์€ ๊ฐ์ฒด์˜ ์ฃผ์†Œ์ด๊ณ , ์ด ๊ฐ’์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฐ’์ด๋ฏ€๋กœ ==๋กœ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

*์ถ”๊ฐ€ํ•™์Šต