Amenable
Amenable's Blog
Amenable
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (189)
    • ๐Ÿ“‚ JAVA (87)
      • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” (65)
      • ์ฃผ์š” ๊ฐœ๋… (22)
    • ๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  (22)
      • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ (1)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (2)
      • ํด๋ฆฐ ์ฝ”๋“œ (8)
      • ํ•จ๊ป˜ ์ž๋ผ๊ธฐ (1)
      • ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP&Network Basic (10)
    • ๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€์ด (0)
    • ๐Ÿ“‚ ๋„คํŠธ์›Œํฌ (14)
      • ๊ฐœ๋… (6)
      • ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ (8)
    • ๐Ÿ“‚ ์Šคํ”„๋ง (13)
      • ๊ธฐ๋ณธ ๊ฐœ๋… (13)
    • ๐Ÿ“‚ WEB (5)
    • ๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ (12)
      • ๊ฐœ๋… (2)
      • ์ •๋ ฌ (8)
      • ํŠธ๋ฆฌ (2)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
      • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ (2)
      • ์ตœ๋‹จ ๊ฒฝ๋กœ (2)
      • ๋ฌธ์ž์—ด (2)
      • ETC (4)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜_๋ฌธ์ œํ’€์ด (4)
      • BOJ_๋ฐฑ์ค€ (4)
    • ๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3)
    • ๐Ÿ“‚ DevOps (2)
      • ๋ฐฐํฌ (2)
    • ๐Ÿ“‚ ํ›„๊ธฐ (8)
      • ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค(ํ”„๋ฆฌ์ฝ”์Šค) (4)
      • 2023๋…„ (3)
      • 2024๋…„ (1)
    • ๐Ÿ“‚ ํšŒ๊ณ  (1)
      • 2023๋…„ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿš€ GitHub

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Amenable
๐Ÿ“‚ JAVA/์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”

clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]

clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]
๐Ÿ“‚ JAVA/์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”

clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]

2023. 4. 8. 21:56

  ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” clone์„ ์žฌ์ •์˜ ํ•  ๋•Œ ์–ด๋–ค ์ ์„ ์ฃผ์˜ํ•ด์„œ ์žฌ์ •์˜ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. clone์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š” ์ฃผ์˜์ ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ์œผ๋ฏ€๋กœ clone์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด์ „ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

  clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ํฌ๊ฒŒ 2๊ฐ€์ง€ ์ƒํ™ฉ์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone์ด๊ณ  ๋‘ ๋ฒˆ์งธ๋Š” ๊ฐ€๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone์ด๋‹ค.

  ๋จผ์ € ๋ถˆ๋ณ€ ๊ฐ์ฒด์— clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ์ฃผ์˜์ ์„ ์‚ดํŽด๋ณด๊ณ , ๋‹ค์Œ ๊ธ€์„ ํ†ตํ•ด ๊ฐ€๋ณ€ ๊ฐ์ฒด์— clone์„ ์žฌ์ •์˜ํ•  ๋•Œ ์ฃผ์˜์ ์„ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž.

 

1. clone ๊ทœ์•ฝ ๐Ÿ‘ฉโ€๐ŸŒพ

  clone์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ํด๋ž˜์Šค์— ์žฌ์ •์˜๋ฅผ ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ๊ฑด(๊ทœ์•ฝ)์„ ๋งŒ์กฑํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜์˜ 3๊ฐ€์ง€ ๊ทœ์•ฝ์„ ๊ธฐ์–ตํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ๊ทœ์•ฝ์„ ์ง€ํ‚ค๋ฉด์„œ clone์„ ์žฌ์ •์˜ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

  1. x.clone() != x
    clone์œผ๋กœ ์–ป์€ ์ธ์Šคํ„ด์Šค๋Š” ์›๋ณธ๊ณผ๋Š” ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์—ฌ์•ผ ํ•œ๋‹ค.
    ์ฆ‰, ์ฐธ์กฐ๊ฐ’์ด ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค.
  2. x.clone().getClass() == x.getClass()
    ์›๋ณธ๊ณผ ๋™์ผํ•œ ํด๋ž˜์Šค์—ฌ์•ผ ํ•œ๋‹ค.
  3. x.clone().equals(x) โ†’ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” true์ด์ง€๋งŒ ํ•„์ˆ˜๋Š” ์•„๋‹ˆ๋‹ค!
    ๊ฐ’์ด ๋‹ค๋ฅผ ์ˆ˜๋„ ์žˆ๋Š” ์ด์œ ๋Š” ์œ ์ผํ•œ ์‹๋ณ„์ž(id ๋“ฑ๋“ฑ)์™€ ๊ฐ™์ด ๋‹ฌ๋ผ์ ธ์•ผ ํ•˜๋Š” ์ธ์Šคํ„ด์Šค ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

2. ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone ๐Ÿ‘จโ€๐Ÿณ

public class User implements Cloneable {
	private final String name;
	private final int age;

	public User(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public User clone() {
		try {
			return (User) super.clone();
		}catch(CloneNotSupportedException e) {
			throw new AssertionError(); // ์ผ์–ด๋‚  ์ˆ˜ ์—†๋Š” ์ผ์ด๋‹ค.
		}
	}
}

  ๊ธฐ๋ณธ์ ์œผ๋กœ clone์„ ์žฌ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์€ ์œ„์™€ ๊ฐ™๋‹ค. ์ด๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด super.clone()์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•ด๋„ ๋˜์ง€ ์•Š์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

public class User implements Cloneable {
	private final String name;
	private final int age;

	public User(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public User clone() {
		User result = new User(this.name, this.age);
		return result;
	}
}

  ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํฐ ๋ฌธ์ œ์ ์ด ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค. User๋ฅผ ์ƒ์†ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” SubUser๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. SubUser์—์„œ๋Š” clone()์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ClassCastException์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

public class SubUser extends User implements Cloneable {

	public SubUser(String name, int age) {
		super(name, age);
	}

	@Override
	public SubUser clone() {
		return (SubUser) super.clone();
	}
}

----------

public static void main(String[] args) {
    SubUser subUserOrigin = new SubUser("amenable", 24);
    SubUser subUserCopy = subUserOrigin.clone(); // ClassCastException
}

  ๊ทธ ์ด์œ ๋Š” super.clone()์œผ๋กœ ์–ป๊ฒŒ ๋˜๋Š” ๊ฐ’์˜ ํƒ€์ž…์ด ๋น„๊ฒฐ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค! 

  ํ˜ธ์ถœ๋˜๋Š” ๊ณณ์˜ ํƒ€์ž…์œผ๋กœ super.clone()์˜ ํƒ€์ž…์ด ๊ฒฐ์ •๋œ๋‹ค. ์ฆ‰, ์–ด๋””์„œ ํ˜ธ์ถœ๋˜๋А๋ƒ์— ๋”ฐ๋ผ์„œ super.clone()์˜ ํƒ€์ž…์ด ๊ฒฐ์ •๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  User ํด๋ž˜์Šค์˜ clone์„ ํ˜ธ์ถœํ•˜๋ฉด super.clone์˜ ํƒ€์ž…์€ User์ด๊ณ , SubUser ํด๋ž˜์Šค์˜ clone์„ ํ˜ธ์ถœํ•˜๋ฉด super.clone()์œผ ํƒ€์ž…์ด SubUser๊ฐ€ ๋œ๋‹ค. ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ ์–ป๊ฒŒ ๋˜๋Š” ํƒ€์ž…์„ ๋ณธ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. (๊ฐ ํด๋ž˜์Šค์—์„œ์˜ ์ถœ๋ ฅ๋ฌธ์„ ์ฐธ๊ณ ํ•˜์ž)

// ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด์„œ clone์„ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ
// User์˜ clone์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ
public class User implements Cloneable {
	private final String name;
	private final int age;

	public User(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public User clone() {
		User result = new User(this.name, this.age);
		System.out.println(result.getClass()); // class User
		return result;
	}
}

----------

public class SubUser extends User implements Cloneable {

	public SubUser(String name, int age) {
		super(name, age);
	}

	@Override
	public SubUser clone() { 
		System.out.println(super.clone().getClass()); // class User
		return (SubUser) super.clone();
	}
}

----------

public static void main(String[] args) {
    User userOrigin = new User("amenable", 24);
    User userCopy = userOrigin.clone();
}
// ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•ด์„œ clone์„ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ
// SubUser์˜ clone์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ
public class User implements Cloneable {
	private final String name;
	private final int age;

	public User(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public User clone() {
		User result = new User(this.name, this.age);
		System.out.println(result.getClass()); // class SubUser
		return result;
	}
}

----------

public class SubUser extends User implements Cloneable {

	public SubUser(String name, int age) {
		super(name, age);
	}

	@Override
	public SubUser clone() { 
		System.out.println(super.clone().getClass()); // class SubUser
		return (SubUser) super.clone();
	}
}

----------

public static void main(String[] args) {
    SubUser subUserOrigin = new SubUser("amenable", 24);
    SubUser subUserCopy = subUserOrigin.clone(); // ClassCastException
}

  ๊ณต๋ณ€ ๋ฐ˜ํ™˜ํƒ€์ž…์„ ์ด์šฉํ•œ๋‹ค๋ฉด ClassCastException์ด ๋œจ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต๋ณ€ ๋ฐ˜ํ™˜ํƒ€์ž…์ด๋ž€ '์žฌ์ •์˜ํ•œ ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์€ ์ƒ์œ„ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํƒ€์ž…์˜ ํ•˜์œ„ ํƒ€์ž…์ด ๋  ์ˆ˜ ์žˆ๋‹ค'๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ํ•˜์œ„ ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ง€, ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•  ๋•Œ ์ƒ์œ„ ํƒ€์ž…์„ ํ•˜์œ„ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

  ๋ณธ๋ก ์œผ๋กœ ๋Œ์•„์™€์„œ ๋งŒ์•ฝ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ clone์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค์˜ clone์„ ์žฌ์ •์˜ํ•˜๋Š” ์ž์†ํด๋ž˜์Šค(SubUser)์—์„œ๋Š” super.clone()์œผ๋กœ ์ƒ์œ„ ํƒ€์ž…(User)์„ ๋ฐ›๊ณ  ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ํ•˜์œ„ ํƒ€์ž…(User โ†’ SubUser)์œผ๋กœ ๋ณ€๊ฒฝ์„ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ๋‹น์—ฐํžˆ ClassCastException์ด ๋ฐœ์ƒํ•œ๋‹ค.

(ํ•˜์œ„ ํƒ€์ž…์„ ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ƒ์œ„ ํƒ€์ž…์„ ํ•˜์œ„ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค) 
  ๊ทธ๋Ÿฌ๋ฏ€๋กœ clone์„ ์žฌ์ •์˜ ํ•  ๋•Œ๋Š” super.clone()์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž!

 

 

  ๋‹ค์Œ ๊ธ€์„ ํ†ตํ•ด ๊ฐ€๋ณ€ ๊ฐ์ฒด์—์„œ๋Š” clone์„ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ณ„์†ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

 

ํ•ด๋‹น ๊ธ€์€ ๋ฐฑ๊ธฐ์„  ๋‹˜์˜ '์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” ์™„๋ฒฝ ๊ณต๋žต'์„ ์ˆ˜๊ฐ•ํ•˜๊ณ  ์ž‘์„ฑํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

'๐Ÿ“‚ JAVA > ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Comparable์„ ๊ตฌํ˜„ํ• ์ง€ ๊ณ ๋ คํ•˜๋ผ - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ14)]  (0) 2023.04.11
clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]  (0) 2023.04.09
toString์„ ํ•ญ์ƒ ์žฌ์ •์˜ํ•˜๋ผ - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ12)]  (0) 2023.03.01
equals๋ฅผ ์žฌ์ •์˜ํ•˜๋ ค๊ฑฐ๋“  hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ11)]  (0) 2023.01.09
equals๋ฅผ ์žฌ์ •์˜ํ•˜๋ ค๊ฑฐ๋“  hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ(1) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ11)]  (0) 2023.01.07
  • 1. clone ๊ทœ์•ฝ ๐Ÿ‘ฉโ€๐ŸŒพ
  • 2. ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ์˜ clone ๐Ÿ‘จโ€๐Ÿณ
'๐Ÿ“‚ JAVA/์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Comparable์„ ๊ตฌํ˜„ํ• ์ง€ ๊ณ ๋ คํ•˜๋ผ - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ14)]
  • clone ์žฌ์ •์˜๋Š” ์ฃผ์˜ํ•ด์„œ ์ง„ํ–‰ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ13)]
  • toString์„ ํ•ญ์ƒ ์žฌ์ •์˜ํ•˜๋ผ - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ12)]
  • equals๋ฅผ ์žฌ์ •์˜ํ•˜๋ ค๊ฑฐ๋“  hashCode๋„ ์žฌ์ •์˜ํ•˜๋ผ(2) - [3์žฅ. ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ณตํ†ต ๋ฉ”์„œ๋“œ(์•„์ดํ…œ11)]
Amenable
Amenable
CS, ์ž๋ฐ”, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์Šคํ”„๋ง, ์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.