μλ°μ νΉμν λͺ©μ μ μ°Έμ‘° νμ 2κ°μ§
- ν΄λμ€μ μΌμ’ μΈ ‘μ΄κ±° νμ ’
- μΈν°νμ΄μ€μ μΌμ’ μΈ ‘μ λν μ΄μ ’
μ΄ λκ°μ§λ₯Ό μ¬λ°λ₯΄κ² μ¬μ©ν΄λ³΄μ.
μμ΄ν 34 : int μμ λμ μ΄κ±° νμ μ μ¬μ©νλΌ
μ΄κ±° νμ μ μΌμ κ°μμ μμκ° μ μ ν κ·ΈμΈλ μ§μνμ§ μλ νμ μ΄λ€.
μ΄κ±° νμ μ΄μ μμ μ μΈ (μ μ μ΄κ±° ν¨ν΄)
public static final int APPLE_FUJI = 0;
public static final int APPLE_PIPPIN = 1;
public static final int APPLE_SMITH = 2;
...
public static final int ORANGE_NEVLE = 0;
public static final int ORANGE_TEMPLE = 1;
λ¨μ →
- νμ μμ 보μ₯ X, (μ€λ μ§ λμ μ¬κ³Όλ₯Ό 보λ΄λ κ²½κ³ κ° λ°μνμ§ μλλ€) ‘==’μ΄ λμΌνλ―λ‘
- μμλ₯Ό μ¬μ©ν λͺ¨λ νμΌ μ¬μ»΄νμΌ νμ
μλ° μ΄κ±° νμ
public enum Apple { FUJI, PIPPIN, GRANNY_SMITH }
public enum ORANGE { NAVEL, TEMPLE, BLOOD }
- μ΄κ±° νμ
μμ²΄κ° ν΄λμ€μ΄λ©° μμ νλλΉ μμ μ μΈμ€ν΄μ€λ₯Ό λ§λ€μ΄ public static finalλ‘ κ³΅κ°νλ€.
- μμ±μλ₯Ό μ 곡νμ§ μμΌλ―λ‘ μΈμ€ν΄μ€κ° μμ±λΆκ°νκ³ μ¬μ€μ finalμ΄λ€. (μΈμ€ν΄μ€ ν΅μ )
- μ±κΈν΄μ μμκ° νλλΏμΈ μ΄κ±° νμ
- μ»΄νμΌ νμ μμ μ±μ μ 곡
- κ°μμ λ€μμ€νμ΄μ€ μ 곡ν¨μΌλ‘ μ΄λ¦μ΄ κ°μλ 곡쑴κ°λ₯ (APPLE.FUJI, ORANGE.FUJI κ°λ₯)
- λ©μλλ νλ μΆκ° κ°λ₯ (μμλ₯Ό μ΄μ©ν μΆκ°μ μΈ κΈ°λ₯ μ 곡)
-Planet-
public enum Planet {
MERCURY(3.302e+23, 2.439e6),
VENUS (4.869e+24, 6.052e6),
EARTH (5.975e+24, 6.378e6),
MARS (6.419e+23, 3.393e6),
JUPITER(1.899e+27, 7.149e7),
SATURN (5.685e+26, 6.027e7),
URANUS (8.683e+25, 2.556e7),
NEPTUNE(1.024e+26, 2.477e7);
private final double mass; // μ§λ(λ¨μ: ν¬λ‘κ·Έλ¨)
private final double radius; // λ°μ§λ¦(λ¨μ: λ―Έν°)
private final double surfaceGravity; // νλ©΄μ€λ ₯(λ¨μ: m / s^2)
// μ€λ ₯μμ(λ¨μ: m^3 / kg s^2)
private static final double G = 6.67300E-11;
// μμ±μ
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
surfaceGravity = G * mass / (radius * radius);
}
public double mass() { return mass; }
public double radius() { return radius; }
public double surfaceGravity() { return surfaceGravity; }
public double surfaceWeight(double mass) {
return mass * surfaceGravity; // F = ma
}
}
μ΄κ±°νμ ν΄λμ€ λ΄λΆμ νΉμ λ°μ΄ν°κ°μ ν λΉνκ³ μΆλ€λ©΄ μ΄κ±° μ μΈ ν μμ±μλ₯Ό ν΅ν΄ ν λΉνλ©΄ λλ€.
- μ΄κ±° νμ μ λΆλ³μ΄λ―λ‘ λͺ¨λ νλλ final, public static finalλ‘ κ³΅κ°
λ§μ½, μμλ₯Ό νλ μ κ±°νκ² λλ©΄ μ κ±°ν μμλ₯Ό μ°Έμ‘°νμ§ μλλ€λ©΄ μλ¬΄λ° μν₯μ΄ μλ€.
κ·Έλ¦¬κ³ μ°Έμ‘°νλ μμλ₯Ό μ κ±°ν κ³³μμλ μ»΄νμΌ μλ¬κ° λ°μν΄ μλ¬λ₯Ό μ‘°κΈ°μ μ°Ύμ μ μλ€.
μ΄κ±° νμ μμλ§λ€ λμμ΄ λ¬λΌμ§λ λ©μλ ꡬμ±
public enum Operation {
PLUS("+") {
public double apply(double x, double y) { return x + y; }
},
MINUS("-") {
public double apply(double x, double y) { return x - y; }
},
TIMES("*") {
public double apply(double x, double y) { return x * y; }
},
DIVIDE("/") {
public double apply(double x, double y) { return x / y; }
};
private final String symbol;
Operation(String symbol) { this.symbol = symbol; }
@Override public String toString() { return symbol; }
public abstract double apply(double x, double y);
λ΄λΆ symbolνλμ μλ§μ κ°μ΄ μ μ₯λλ©° toString() μ¬μ μλ₯Ό ν΅ν΄ symbolκ°μ΄ λ°νλ¨
μλ‘μ΄ μμκ° μΆκ° λμμ λ apply()μ¬μ μμ¬λΆλ₯Ό μ»΄νμΌμλ¬λ‘ μλ €μ€λ€.
κ°μ λ°λΌ λΆκΈ°νμ¬ μ½λλ₯Ό 곡μ νλ μ΄κ±° νμ
enum PayrollDay {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
private static final int MINS_PER_SHIFT = 8 * 60;
int pay(int minutesWorked, int payRate) {
int basePay = minutesWorked * payRate;
int overtimePay;
switch (this) {
case SATURDAY:
case SUNDAY:
overtimePay = basePay / 2;
break;
default:
overtimePay = minutesWorked <= MINS_PER_SHIFT
? 0
: (minutesWorked - MINS_PER_SHIFT) * payRate / 2;
}
return basePay + overtimePay;
}
}
@Test public void payrollDayTest() {
int pay1 = PayrollDay.FRIDAY.pay(480, 200);
System.out.println("pay1 = " + pay1);
int pay2 = PayrollDay.FRIDAY.pay(540, 200);
System.out.println("pay2 = " + pay2);
int pay3 = PayrollDay.SUNDAY.pay(480, 200);
System.out.println("pay3 = " + pay3);
}
μ£Όλ§κ³Ό μ£Όμ€μ λΆλ¦¬νμ¬ κ³μ°νλ κ²μ λΆλͺ κ°κ²°νμ§λ§ ‘κ΄λ¦¬ κ΄μ ' μμ μνν μ½λμ΄λ€. λ§μ½, μλ‘μ΄ μμμΈ ν΄κ°κ° μΆκ°λμλλ° payμ μ¬μ μλ₯Ό νμ§ μμΌλ©΄ ν΄κ°μλ νμΌκ³Ό κ°μ μκΈμ λ°κ²λλ€.
- κ΄λ¦¬κ° μ΄λ ΅κ³ μ€μλ₯Ό μ λ°ν μ μλ€.
μ λ΅ μ΄κ±° νμ ν¨ν΄
// μ½λ 34-9 μ λ΅ μ΄κ±° νμ
ν¨ν΄ (218-219μͺ½)
enum PayrollDay {
MONDAY(WEEKDAY), TUESDAY(WEEKDAY), WEDNESDAY(WEEKDAY),
THURSDAY(WEEKDAY), FRIDAY(WEEKDAY),
SATURDAY(WEEKEND), SUNDAY(WEEKEND);
private final PayType payType;
PayrollDay(PayType payType) { this.payType = payType; }
// PayrollDay() { this(PayType.WEEKDAY); } // (μμ λ
ΈνΈ) μμ 4μλΆν° μμ
int pay(int minutesWorked, int payRate) {
return payType.pay(minutesWorked, payRate);
}
// μ λ΅ μ΄κ±° νμ
enum PayType {
WEEKDAY {
int overtimePay(int minsWorked, int payRate) {
return minsWorked <= MINS_PER_SHIFT ? 0 :
(minsWorked - MINS_PER_SHIFT) * payRate / 2;
}
},
WEEKEND {
int overtimePay(int minsWorked, int payRate) {
return minsWorked * payRate / 2;
}
};
abstract int overtimePay(int mins, int payRate);
private static final int MINS_PER_SHIFT = 8 * 60;
int pay(int minsWorked, int payRate) {
int basePay = minsWorked * payRate;
return basePay + overtimePay(minsWorked, payRate);
}
}
public static void main(String[] args) {
for (PayrollDay day : values())
System.out.printf("%-10s%d%n", day, day.pay(8 * 60, 1));
}
}
μλ‘μ΄ μμλ₯Ό μΆκ°ν λ ‘μ λ΅'μ μ ννλλ‘ νλ κ²μ΄λ€. μ΄μ PayrollDayλ μμ μλΉ μ λ΅μΌλ‘ ‘PayType’μ μ νν μ μλ€.
μ λ΅μ 미리 μ μν΄λκ³ μμ± μ μ νν μ λ΅μΌλ‘ pay()λ©μλκ° μνλλ€.
μ΄κ±° νμ μ¬μ© κΈ°μ€
- νμν μμλ₯Ό μ»΄νμΌ νμμ λ€ μ μ μλ μμ μ§ν©μ΄λΌλ©΄ νμ μ΄κ±° νμ μ μ¬μ©νμ.
- μ΄κ±° νμ μ μ μλλ μμκ° μμν μμ λΆλ³μΌ νμλ μλ€.
ν΅μ¬ μ 리
- μ΄κ±°νμ μ΄ μ μ μμλ³΄λ€ κ°λ μ±λ μ’κ³ μμ νλ€.
- μ΄κ±° νμ μμκ° κ°μ μ½λλ₯Ό 곡μ νλ€λ©΄, μ λ΅ μ΄κ±° νμ ν¨ν΄μ μ¬μ©νμ.
μμ΄ν 35 : ordinal λ©μλ λμ μΈμ€ν΄μ€ νλλ₯Ό μ¬μ©νλΌ
λλΆλΆ μ΄κ±° νμ μμλ νλμ μ μ«κ°μ λμλλ€. κ·Έλ¦¬κ³ ordinal() λ©μλλ ν΄λΉ μμκ° μ΄κ±° νμ μμ λͺλ²μ§Έ μμΉνλμ§ λ°ννλ€.
μ΄ λ©μλλ₯Ό μ¬μ©νλ€κ° μ€κ°μ μμκ° μΆκ°λλ©΄ μμΉμ λ³νλ‘ μΈν΄ μ€λ₯κ° λ°μνλ€. λ°λΌμ μ¬μ©νμ§ λ§μ. (λ²μ© μλ£κ΅¬μ‘°μμ μ°μ)
μΈ μΌμ΄ μλ€λ©΄ μΈμ€ν΄μ€ νλλ‘ μ μν΄μ μ¬μ©νλΌ.
μμ΄ν 36 : λΉνΈ νλ λμ EnumSetμ μ¬μ©νλΌ
λΉνΈ νλλ μ¬λ¬ μμλ₯Ό νλλ‘ λͺ¨μΌκ³ ν©μ§ν©, κ΅μ§ν© μ°μ°μ μ 리νλ€.
νμ§λ§, λΉνΈμ΄κΈ°λλ¬Έμ μ μ μμλ³΄λ€ ν΄μνκΈ° μ΄λ ΅λ€.
EnumSet - λΉνΈ νλλ₯Ό λ체νλ νλμ κΈ°λ²
public class Text {
public enum Style {BOLD, ITALIC, UNDERLINE, STRIKETHROUGH}
// μ΄λ€ Setμ λ겨λ λλ, EnumSetμ΄ κ°μ₯ μ’λ€.
public void applyStyles(Set<Style> styles) {
System.out.printf("Applying styles %s to text%n",
Objects.requireNonNull(styles));
}
// μ¬μ© μ
public static void main(String[] args) {
Text text = new Text();
text.applyStyles(EnumSet.of(Style.BOLD, Style.ITALIC));
}
}
EnumSetμ μ¬μ©νλ©΄ λΉνΈλ₯Ό ν¨μ¨μ μΌλ‘ μ²λ¦¬νλ©° λΉνΈλ₯Ό λ€λ£¨λ μ΄λ €μμμ λ²μ΄λ μ μλ€.
μμ΄ν 37 : ordinal μΈλ±μ± λμ EnumMapμ μ¬μ©νλΌ
λ°°μ΄μ μΈλ±μ€λ₯Ό μ»κΈ° μν΄ ordinalμ μ°λ κ²μ μ’μ§ μμΌλ EnumMapμ μ¬μ©νλΌ
μμ΄ν 38 : νμ₯ν μ μλ μ΄κ±° νμ μ΄ νμνλ©΄ μΈν°νμ΄μ€λ₯Ό μ¬μ©νλΌ
μ΄κ±°νμ μ νμ₯νλ κ²μ μ€κ³μ ꡬνμ΄ λ³΅μ‘ν΄μ Έμ μ’μ§ μλ€. (νμ₯λ μ§μλμ§ μμ)
μ΄κ±°νμ μ΄ μμμ μΈν°νμ΄μ€λ₯Ό ꡬνκ°λ₯νλ―λ‘ νμ₯μ΄ κ°λ₯νλ€.
μ΄κ±° νμ νμ₯
public interface Operation {
double apply(double x, double y);
}
public enum BasicOperation implements Operation {
PLUS("+") {
public double apply(double x, double y) { return x + y; }
}
MINUS("-") {
public double apply(double x, double y) { return x - y; }
}
}
// νμ₯ κ°λ₯ μ΄κ±° νμ
public enum ExtendedOperation implements Operation {
EXP("^") {
public double apply(double x, double y) {
return Math.pow(x, y);
}
}
}
ν΄λμ€ λ°μ μ€ν
@Test
public void operationTest() {
double x = 4.0;
double y = 2.0;
getEnumClass(BasicOperation.class, x, y);
getEnumClass(ExtendedOperation.class, x, y);
}
private < T extends Enum < T > & Operation > void getEnumClass(Class < T > enumClass, double x, double y) {
for (Operation operation : enumClass.getEnumConstants()) {
System.out.printf("%f %s %f = %f%n", x, operation, y, operation.apply(x, y));
}
}
컬λ μ μΌλ‘ λ°μ μ€ν
@Test public void operationTest() {
double x = 4.0;
double y = 2.0;
getEnumCollection(Arrays.asList(BasicOperation.values()), x, y);
getEnumCollection(Arrays.asList(ExtendedOperation.values()), x, y);
}
private void getEnumCollection(Collection <? extends Operation > opSet, double x, double y) {
for (Operation operation : opSet) {
System.out.printf("%f %s %f = %f%n", x, operation, y, operation.apply(x, y));
}
}
μμ΄ν 39 : λͺ λͺ ν¨ν΄λ³΄λ¨ μ λν μ΄μ μ μ¬μ©νλΌ
λͺ λͺ ν¨ν΄ λ¨μ
- μ ν΄μ§ μ΄λ¦μμ μ€νκ° λλ©΄ μλλ€. (μ€μ λ°μ)
- κ°λ°μκ° μλνλλ‘ μλ μ μλ€ (μ¬μ©λ² μλͺ» μ΄ν΄ν μ)
- νλ‘κ·Έλ¨ μμλ₯Ό 맀κ°λ³μλ‘ μ λ¬ν λ°©λ²μ΄ μλ€.
μ λν μ΄μ μ μ¬μ©νλ©΄ μ μ©λ μ 보λ₯Ό μ΄μ©ν΄ μλͺ» μ¬μ©ν μμΉμμ μ»΄νμΌ μ μ€λ₯λ₯Ό λ±λλ€.
/**
* λͺ
μν μμΈλ₯Ό λμ ΈμΌλ§ μ±κ³΅νλ ν
μ€νΈ λ©μλμ© μ λν
μ΄μ
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ExceptionTest {
Class<? extends Throwable> value();
}
μ΄λ Έν μ΄μ μ ν΅ν΄ ‘λ©μλ μμΉ'μ μ¬μ©νλ μ§ μ»΄νμΌ νμμ κ²μ¬ν μ μκ³ μ΄λ Έν μ΄μ μ΄ μ΄λκΉμ§ μ΄μμμ μ§λ λͺ μν μ μλ€.
μ λν μ΄μ μ κ΄μ¬ μλ νλ‘κ·Έλ¨μ μΆκ°μ 보λ₯Ό μ 곡νλ€. μ¦, νΉλ³ν μ²λ¦¬λ₯Ό ν κΈ°νλ₯Ό μ€λ€.
-RunTestsμμ-
public class RunTests {
public static void main(String[] args) throws Exception {
int tests = 0;
int passed = 0;
Class<?> testClass = Class.forName(args[0]);
for (Method m : testClass.getDeclaredMethods()) {
if (m.isAnnotationPresent(Test.class)) {
tests++;
try {
m.invoke(null);
passed++;
} catch (InvocationTargetException wrappedExc) {
Throwable exc = wrappedExc.getCause();
System.out.println(m + " μ€ν¨: " + exc);
} catch (Exception exc) {
System.out.println("μλͺ» μ¬μ©ν @Test: " + m);
}
}
if (m.isAnnotationPresent(ExceptionTest.class)) {
tests++;
try {
m.invoke(null);
System.out.printf("ν
μ€νΈ %s μ€ν¨: μμΈλ₯Ό λμ§μ§ μμ%n", m);
} catch (InvocationTargetException wrappedEx) {
Throwable exc = wrappedEx.getCause();
Class<? extends Throwable> excType =
m.getAnnotation(ExceptionTest.class).value();
if (excType.isInstance(exc)) {
passed++;
} else {
System.out.printf(
"ν
μ€νΈ %s μ€ν¨: κΈ°λν μμΈ %s, λ°μν μμΈ %s%n",
m, excType.getName(), exc);
}
} catch (Exception exc) {
System.out.println("μλͺ» μ¬μ©ν @ExceptionTest: " + m);
}
}
}
System.out.printf("μ±κ³΅: %d, μ€ν¨: %d%n",
passed, tests - passed);
}
}
argsμΈμλ‘ λμ΄μ¨ ν΄λμ€μ λͺ¨λ λ©μλλ₯Ό λ°λ³΅νλ©° μ΄λ Έν μ΄μ μ μ©λ λ©μλλ₯Ό νΈμΆνλ©° ν μ€νΈνλ€. (μ΄λ Έν μ΄μ μ ν΅ν μΆκ°μ μΈ μ²λ¦¬)
μμμ λ§λ μ΄λ Έν μ΄μ κ³Ό ν μ€νΈλ₯Ό μ¬μ©ν νλ‘κ·Έλ¨μ λ§λ€μ΄λ³΄μ.
public class Sample2 {
@ExceptionTest(ArithmeticException.class)
public static void m1() { // μ±κ³΅ν΄μΌ νλ€.
int i = 0;
i = i / i;
}
@ExceptionTest(ArithmeticException.class)
public static void m2() { // μ€ν¨ν΄μΌ νλ€. (λ€λ₯Έ μμΈ λ°μ)
int[] a = new int[0];
int i = a[1];
}
@ExceptionTest(ArithmeticException.class)
public static void m3() { } // μ€ν¨ν΄μΌ νλ€. (μμΈκ° λ°μνμ§ μμ)
}
μ΄λ Έν μ΄μ μ 맀κ°λ³μ νμ μ΄ Class<? extends Throwable> μ΄λ―λ‘ Throwableμ νμ₯ν λͺ¨λ ν΄λμ€λ₯Ό μμ©νλ€.
μ΄λ₯Ό ν΅ν΄ ν μ€νΈμμλ ‘μ€μ λ°μν μμΈ'μ ‘μ΄λ Έν μ΄μ μ λͺ μλ μμΈ'λ₯Ό λΉκ΅ν΄μ μ±κ³΅/μ€ν¨ μ¬λΆλ₯Ό νλ¨ν μ μλ€.
λ°λ³΅ κ°λ₯ μ λν μ΄μ
‘@Repeatable’μ΄ μλ°8 λΆν° μΆκ°λμλ€.
μ΄λ² μμ΄ν μμ 보μ¬μ€ ν μ€νΈ νλ μμν¬λ κ°λ¨νμ§λ§ λͺ λͺ ν¨ν΄λ³΄λ¨ μ λν μ΄μ μ΄ λ«λ€λ μ μ 보μ¬μ€λ€.
→ μ»΄νμΌ λ¨κ³ μλ¬ μ‘κΈ°, μ΄λ Έν μ΄μ μ ν΅ν ν μ€νΈ μ€ν λ° νλ¨
κ·Έλ¬λ―λ‘, μ λν μ΄μ μΌλ‘ ν μ μλ μΌμ λͺ λͺ ν¨ν΄μΌλ‘ μ²λ¦¬ν μ΄μ λ μλ€
μμ΄ν 40 : ‘@Override’ μ λν μ΄μ μ μΌκ΄λκ² μ¬μ©νλΌ
μ€λ²λΌμ΄λ μ λν μ΄μ μ μ¬μ©νλ©΄ λͺ μμ μΌλ‘ μ¬μ μ ν κ²μ ννν μ μλ€. μ΄λ₯Ό ν΅ν΄ μ€μλ‘ νλΌλ―Έν° νμ μ μλͺ» μ μ΄ λ€μ€ μ μνλ κ²½μ°μ μ»΄νμΌ μ€λ₯λ‘ λ°λ‘ μ‘μλΌ μ μλ€.
κ·Έλ¬λ―λ‘, μμ ν΄λμ€μ λ©μλλ₯Ό μ¬μ μνλ €λ λ©μλμλ λͺ¨λ ‘@Override’ μ λν μ΄μ μ λ¬μ.
μμ΄ν 41 : μ μνλ €λ κ²μ΄ νμ μ΄λΌλ©΄ λ§μ»€ μΈν°νμ΄μ€λ₯Ό μ¬μ©νλΌ
μ무 λ©μλλ λ΄κ³ μμ§ μκ³ λ¨μ§ μμ μ ꡬννλ ν΄λμ€κ° νΉμ μμ±μ κ°μ§μ νμν΄μ£Όλ μΈν°νμ΄μ€λ₯Ό ***‘λ§μ»€ μ΄ν°νμ΄μ€'***λΌκ³ νλ€.
- μ) Serializable μΈν°νμ΄μ€
- μ΄λ₯Ό ꡬνν ν΄λμ€λ μ§λ ¬νν μ μλ€κ³ μλ €μ€λ€.
λ§μ»€ μΈν°νμ΄μ€λ λ§μ»€ μ λν μ΄μ λ³΄λ€ λ«λ€.
λ§μ»€ μΈν°νμ΄μ€λ μ΄λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ€μ ꡬλΆνλ νμ μΌλ‘ μΈ μ μλ€. (λ§μ»€ μ λν μ΄μ μ λΆκ°)
→ λ§μ»€ μΈν°νμ΄μ€λ νμ μ΄κΈ° λλ¬Έμ λ°νμ μ€λ₯λ₯Ό μ»΄νμΌ νμμ μ‘μ μ μλ€.
μΈμλ‘ λ°μ κ°μ²΄κ° Serializableμ ꡬννμ κ±°λΌ κ°μ νκ³ μ€κ³λ λ©μλλ μ»΄νμΌ νμμ μ€λ₯λ₯Ό μ‘μ μ μλ€.
λ§μ»€ μΈν°νμ΄μ€ vs λ§μ»€ μ λν μ΄μ
- λ§μ»€ μΈν°νμ΄μ€λ μ΄λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ€μ ꡬλΆνλ νμ μΌλ‘ μΈ μ μμΌλ, λ§μ»€ μ λν μ΄μ μ κ·Έλ μ§ μλ€.
- λ§μ»€ μΈν°νμ΄μ€λ μ μ© λμμ λ μ λ°νκ² μ§μ ν μ μλ€.
- νΉμ ν΄λμ€ λλ μΈν°νμ΄μ€μ νμ νμ μλ§ μ μ©ν μ μλ€. ex) Set μΈν°νμ΄μ€
- λ§μ»€ μ λν
μ΄μ
μ κ±°λν μ λν
μ΄μ
μμ€ν
μ μ§μμ λ°μ μ μλ€.
- μ λν μ΄μ μ μ κ·Ή νμ©νλ νλ μμν¬μμλ μ λν μ΄μ μ΄ μΌκ΄μ±μ μ§λλ λ° μ 리νλ€
ν΄λμ€μ μΈν°νμ΄μ€ μΈμ νλ‘κ·Έλ¨ μμ(λͺ¨λ, ν¨ν€μ§, νλ, μ§μλ³μ λ±)μ λ§νΉν΄μΌ ν λ μ λν μ΄μ μ μΈ μ λ°μ μλ€.
“λ§νΉμ΄ λ κ°μ²΄λ₯Ό 맀κ°λ³μλ‘ λ°λ λ©μλλ₯Ό μμ±ν μΌμ΄ μλ€” λ©΄ λ§μ»€ μΈν°νμ΄μ€
μ΄λ€ κ²μ μ¬μ©νλμ§ λμμ§ κ³°κ³°μ΄ μκ°ν΄λ³΄μ.
'πμ½μ μ± μ 리 > μ΄νν°λΈμλ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ΄νν°λΈ μλ°] 8μ₯ : λ©μλ (1) | 2022.03.27 |
---|---|
[μ΄νν°λΈ μλ°] 7μ₯ : λλ€μ μ€νΈλ¦Ό (0) | 2022.03.23 |
[μ΄νν°λΈ μλ°] 5μ₯ : μ λ€λ¦ (0) | 2022.03.14 |
[μ΄νν°λΈ μλ°] 4μ₯ : ν΄λμ€μ μΈν°νμ΄μ€ (0) | 2022.03.14 |
[μ΄νν°λΈ μλ°] 3μ₯ : λͺ¨λ κ°μ²΄μ κ³΅ν΅ λ©μλ (0) | 2022.03.09 |