item 1 Jung inchul - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

Effective Java 3e ์•„์ดํ…œ 1์„ ์š”์•ฝํ•œ ๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป๋Š” ์ „ํ†ต์ ์ธ ์ˆ˜๋‹จ์€ public ์ƒ์„ฑ์ž๋‹ค. ํด๋ž˜์Šค๋Š” ์ƒ์„ฑ์ž์™€ ๋ณ„๋„๋กœ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ž€?
๊ฐ์ฒด ์ƒ์„ฑ์„ ์บก์Аํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ , static์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ํด๋ž˜์Šค๋Š” ํด๋ผ์ด์–ธํŠธ์— public ์ƒ์„ฑ์ž ๋Œ€์‹  (ํ˜น์€ ์ƒ์„ฑ์ž์™€ ํ•จ๊ป˜) ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

๋จผ์ € ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑ์ž๋ณด๋‹ค ์ข‹์€ ์žฅ์  ๋‹ค์„ฏ ๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด์ž

1. ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ƒ์„ฑ์ž์— ๋„˜๊ธฐ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ƒ์„ฑ์ž ์ž์ฒด๋งŒ์œผ๋กœ๋Š” ๋ฐ˜ํ™˜๋  ๊ฐ์ฒด์˜ ํŠน์„ฑ์„ ์ œ๋Œ€๋กœ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋ฐ˜๋ฉด ์ •์  ํŒฉํ„ฐ๋ฆฌ๋Š” ์ด๋ฆ„๋งŒ ์ž˜ ์ง€์œผ๋ฉด ๋ฐ˜ํ™˜๋  ๊ฐ์ฒด์˜ ํŠน์„ฑ์„ ์‰ฝ๊ฒŒ ๋ฌ˜์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๊ฐ’์ด ์†Œ์ˆ˜์ธ BigInteger๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

// ์ผ๋ฐ˜ ์ƒ์„ฑ์ž๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด
BigInteger num = new BigInteger(0, 0, new Random()); 

// ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋กœ ์ƒ์„ฑํ•œ ๊ฐ์ฒด
BigInteger num2 = BigInteger.probablePrime(); 

ํ•˜๋‚˜์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋กœ๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•œ ์ƒ์„ฑ์ž๋ฅผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ์‹์œผ๋กœ ์ด ์ œํ•œ์„ ํ”ผํ•ด๋ณผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ข‹์ง€ ์•Š์€ ๋ฐœ์ƒ์ด๋‹ค.

์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ์—๋Š” ์ด๋Ÿฐ ์ œ์•ฝ์ด ์—†๋‹ค. ํ•œ ํด๋ž˜์Šค์— ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ๊ฐ™์€ ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์œผ๋ฉด ์ƒ์„ฑ์ž๋ฅผ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋กœ ๋ฐ”๊พธ๊ณ  ๊ฐ๊ฐ์˜ ์ฐจ์ด๋ฅผ ์ž˜ ๋“œ๋Ÿฌ๋‚ด๋Š” ์ด๋ฆ„์„ ์ง€์–ด์ฃผ์ž

2. ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์ง€๋Š” ์•Š์•„๋„ ๋œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ Boolean.valueOf(boolean) ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด๋ฅผ ์•„์˜ˆ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ (ํŠนํžˆ ์ƒ์„ฑ ๋น„์šฉ์ด ํฐ) ๊ฐ™์€ ๊ฐ์ฒด๊ฐ€ ์ž์ฃผ ์š”์ฒญ๋˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์„ฑ๋Šฅ์„ ์ƒ๋‹นํžˆ ๋Œ์–ด์˜ฌ๋ ค ์ค€๋‹ค. ํ”Œ๋ผ์ด์›จ์ดํŠธ ํŒจํ„ด๋„ ์ด์™€ ๋น„์Šทํ•œ ๊ธฐ๋ฒ•์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

public static Boolean valueOf(boolean b){
    return b ? Boolean.TRUE : Boolean.FALSE;
}

๋ฐ˜๋ณต๋˜๋Š” ์š”์ฒญ์— ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‹์œผ๋กœ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฐฉ์‹์˜ ํด๋ž˜์Šค๋Š” ์–ธ์ œ ์–ด๋А ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ด์•„ ์žˆ๊ฒŒ ํ• ์ง€๋ฅผ ์ฒ ์ €ํžˆ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šค ํ†ต์ œ ํด๋ž˜์Šค๋ผ ํ•œ๋‹ค.

ํ”Œ๋ผ์ด์›จ์ดํŠธ ํŒจํ„ด์ด๋ž€?
๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ  ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋Š” ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ณต์œ ๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์œผ๋กœ ์ž์›์„ ํ™œ์šฉํ•œ๋‹ค. ํ•œ๋ฒˆ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋Š” ๋‘๋ฒˆ ์ƒ์„ฑ๋˜์ง€ ์•Š๊ณ , ํ’€(Pool)์— ์˜ํ•ด์„œ ๊ด€๋ฆฌ ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

// Flyweight ํŒจํ„ด ์ ์šฉ ์‚ฌ๋ก€

public class Test{
  public static void main(String[] args){
      String s = "hello";
      String s1 = new String("hello");
      String s2 = "hello";
 
      System.out.println("s == s1 ? " + (s == s1)); // false
      System.out.println("s == s2 ? " + (s == s2)); // true
   }
}

์ธ์Šคํ„ด์Šค๋ฅผ ํ†ต์ œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

  • ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ต์ œํ•˜๋ฉด ํด๋ž˜์Šค๋ฅผ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์ธ์Šคํ„ด์Šคํ™” ๋ถˆ๊ฐ€๋กœ ๋งŒ๋“ค์ˆ˜๋„ ์žˆ๋‹ค.
  • ๋ถˆ๋ณ€ ๊ฐ’ ํด๋ž˜์Šค์—์„œ ๋™์น˜์ธ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹จ ํ•˜๋‚˜๋ฟ์ž„์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ๋ฐ˜ํ™˜ ํƒ€์ž…์˜ ํ•˜์œ„ ํƒ€์ž… ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์žˆ๋‹ค.

์ด ํŠน์ง•์€ ๋ฐ˜ํ™˜ํ•  ๊ฐ์ฒด์˜ ํด๋ž˜์Šค๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” '์—„์ฒญ๋‚œ ์œ ์—ฐ์„ฑ'์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“œ๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ์ด๊ธฐ๋„ ํ•˜๋‹ค.

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ด 45๊ฐœ ํด๋ž˜์Šค๋ฅผ ๊ณต๊ฐœํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— API ์™ธ๊ฒฌ์„ ํ›จ์”ฌ ์ž‘๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋‹ค. API๊ฐ€ ์ž‘์•„์ง„ ๊ฒƒ์€ ๋ฌผ๋ก  ๊ฐœ๋…์ ์ธ ๋ฌด๊ฒŒ, ์ฆ‰ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ตํ˜€์•ผ ํ•˜๋Š” ๊ฐœ๋…์˜ ์ˆ˜์™€ ๋‚œ์ด๋„๋„ ๋‚ฎ์ท„๋‹ค.

์ž๋ฐ” 8๋ถ€ํ„ฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค๋Š” ์ œํ•œ์ด ํ’€๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šคํ™” ๋ถˆ๊ฐ€ ๋™๋ฐ˜ ํด๋ž˜์Šค๋ฅผ ๋‘˜ ์ด์œ ๊ฐ€ ๋ณ„๋กœ ์—†๋‹ค.

์ž๋ฐ” 9์—์„œ๋Š” private ์ •์  ๋ฉ”์„œ๋“œ๊นŒ์ง€ ํ—ˆ๋ฝํ•˜์ง€๋งŒ ์ •์  ํ•„๋“œ์™€ ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ์—ฌ์ „ํžˆ public์ด์–ด์•ผ ํ•œ๋‹ค.

public interface Pizza {
    void cook();

    public static BulgogiPizza(String topping){
        return new BulgogiPizza(topping);
    }
}

public class BulgogiPizza implements Pizza{ ... }

4. ์ž…๋ ฅ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋”ฐ๋ผ ๋งค๋ฒˆ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

EnumSet ํด๋ž˜์Šค๋Š” public ์ƒ์„ฑ์ž ์—†์ด ์˜ค์ง ์ •์  ํŒฉํ„ฐ๋ฆฌ๋งŒ ์ œ๊ณตํ•˜๋Š”๋ฐ, OpenJDK์—์„œ๋Š” ์›์†Œ์˜ ์ˆ˜์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€ ํ•˜์œ„ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์›์†Œ๊ฐ€ 64๊ฐœ ์ดํ•˜๋ฉด ์›์†Œ๋“ค์„ long ๋ณ€์ˆ˜ ํ•˜๋‚˜๋กœ ๊ด€๋ฆฌํ•˜๋Š” RegularEnumSet์˜ ์ธ์Šคํ„ด์Šค, 65๊ฐœ ์ด์ƒ์ด๋ฉด JumboEnumSet์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ํŒฉํ„ฐ๋ฆฌ๊ฐ€ ๊ฑด๋„ค์ฃผ๋Š” ๊ฐ์ฒด๊ฐ€ ์–ด๋А ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ์•Œ ์ˆ˜๋„ ์—†๊ณ  ์•Œ ํ•„์š”๋„ ์—†๋‹ค. EnumSet์˜ ํ•˜์œ„ ํด๋ž˜์Šค์ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

public interface Pizza {
    void cook();

    public static BakedPizza(Boolean isVegiterian, String topping){
        return isVegiterian ? new VegitablePizza(topping); : new BulgogiPizza(topping);
    }
}

public class BulgogiPizza implements Pizza{ ... }
public class VegitablePizza implements Pizza{ ... }

5. ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‹œ์ ์—๋Š” ๋ฐ˜ํ™˜ํ•  ๊ฐ์ฒด์˜ ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต์ž ํ”„๋ ˆ์ž„์›Œํฌ๋กœ๋Š” JDBC๊ฐ€ ์žˆ๋‹ค.

์„œ๋น„์Šค ์ œ๊ณต์ž ํ”„๋ ˆ์ž„์›Œํฌ๋Š” 3๊ฐœ์˜ ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ๋กœ ์ด๋ค„์ง„๋‹ค. ๊ตฌํ˜„์ฒด์˜ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค, ์ œ๊ณต์ž๊ฐ€ ๊ตฌํ˜„์ฒด๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ œ๊ณต์ž ๋“ฑ๋ก API, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋น„์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค ์ ‘๊ทผ API๊ฐ€ ๊ทธ ์ฃผ์ธ๊ณต์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋น„์Šค ์ ‘๊ทผ API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์›ํ•˜๋Š” ๊ตฌํ˜„์ฒด์˜ ์กฐ๊ฑด์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์กฐ๊ฑด์„ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ตฌํ˜„์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ง€์›ํ•˜๋Š” ๊ตฌํ˜„์ฒด๋“ค์„ ํ•˜๋‚˜์”ฉ ๋Œ์•„๊ฐ€๋ฉฐ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด ์„œ๋น„์Šค ์ ‘๊ทผ API๊ฐ€ ๋ฐ”๋กœ ์„œ๋น„์Šค ์ œ๊ณต์ž ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ทผ๊ฐ„์ด๋ผ๊ณ  ํ•œ '์œ ์—ฐํ•œ ์ •์  ํŒฉํ„ฐ๋ฆฌ'์˜ ์‹ค์ฒด๋‹ค.

JDBC์—์„œ๋Š” Connection์ด ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„, DriverManager.registerDriver๊ฐ€ ์ œ๊ณต์ž ๋“ฑ๋ก API ์—ญํ• ์„, Driver๊ฐ€ ์„œ๋น„์Šค ์ œ๊ณต์ž ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ด์ œ ๋‹จ์ ์„ ์•Œ์•„๋ณผ ์ฐจ๋ก€๋‹ค.

1. ์ƒ์†์„ ํ•˜๋ ค๋ฉด public ์ด๋‚˜ protected ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ˆ ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋งŒ ์ œ๊ณตํ•˜๋ฉด ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.

์ด ์ œ์•ฝ์€ ์ƒ์†๋ณด๋‹ค๋Š” ์ปดํฌ์ง€์…˜์„ ์‚ฌ์šฉํ•˜๋„๋ก ์œ ๋„ํ•˜๊ณ  ๋ถˆ๋ณ€ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค๋ ค๋ฉด ์ด ์ œ์•ฝ์„ ์ง€์ผœ์•ผ ํ•œ๋‹ค๋Š” ์ ์—์„œ ์˜คํžˆ๋ ค ์žฅ์ ์œผ๋กœ ๋ฐ›์•„๋“ค์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

2. ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ฐพ๊ธฐ ์–ด๋ ต๋‹ค.

์ƒ์„ฑ์ž์ฒ˜๋Ÿผ API ์„ค๋ช…์— ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š์œผ๋‹ˆ ์‚ฌ์šฉ์ž๋Š” ์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ ๋ฐฉ์‹ ํด๋ž˜์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•  ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์•ผ ํ•œ๋‹ค.

Method Example
from Date d = Date.from(instance);
of EnumSet.of(JACK | QUEEN | KING)
valueof BigInteger.valueOf(Integer.MAX_VALUE)
instance getInstance
create newInstance
getType Files.getFileStore(path)
newType Files.newBufferedReader(path)
type Collections.list(legacyLitany);

์ •๋ฆฌ

์ •์  ํŒฉํ„ฐ๋ฆฌ ๋ฉ”์„œ๋“œ์™€ public ์ƒ์„ฑ์ž๋Š” ๊ฐ์ž์˜ ์“ฐ์ž„์ƒˆ๊ฐ€ ์žˆ์œผ๋‹ˆ ์ƒ๋Œ€์ ์ธ ์žฅ๋‹จ์ ์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ์ •์  ํŒฉํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์œ ๋ฆฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์œผ๋ฏ€๋กœ ๋ฌด์ž‘์ • public ์ƒ์„ฑ์ž๋ฅผ ์ œ๊ณตํ•˜๋˜ ์Šต๊ด€์ด ์žˆ๋‹ค๋ฉด ๊ณ ์น˜์ž!

โš ๏ธ **GitHub.com Fallback** โš ๏ธ