์ ํต์ ์ผ๋ก public ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ ์ด์ธ์,
public static ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ํด๋น ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ป์ ์ ์๋ค.
public class Book {
private String name;
private String author;
private String publisher;
public static createBook() {
return (Book ์ธ์คํด์ค);
}
}
Book ํด๋์ค
public class Book {
private String name;
private String author;
private String publisher;
// ์์ฑ์๋ฅผ ์ด์ฉํ ๊ฐ์ฒด ์ด๊ธฐํ
public Book(String name) {
this.name = name;
}
// ํํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ด์ฉํ ๊ฐ์ฒด ์ด๊ธฐํ
public static createBookWithName(name) {
return new Book(name);
}
}
ํด๋ผ์ด์ธํธ ํธ์ถ ์ฝ๋
Book book1 = new Book("effectiveJava");
// "effectiveJava" ๊ฐ ์ด๋ค ์ธ์คํด์ค ๋ณ์์ธ์ง ์๊ธฐ ์ด๋ ต๋ค.
Book book2 = Book.createBookWithName("effectiveJava");
// ์ด๋ฆ์ด "effectiveJava" ์์ ํ๋์ ์ ์ ์๋ค.
๋งค๊ฐ๋ณ์์ ํ์ ๊ณผ ๊ฐฏ์๊ฐ ๊ฐ์ ์์ฑ์๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค ์ ์๋ค.
public class Book {
private String name;
private String author;
private String publisher;
public Book(String name) {
this.name = name;
}
// ๋ถ๊ฐ๋ฅ
public Book(String author) {
this.author = author;
}
}
ํ์ง๋ง ์๋์ ๊ฐ์ด ์ ์ ํฉํ ๋ฆฌ ๋งค์๋์์๋ ๊ฐ๋ฅํ๋ค.
public class Book {
private String name;
private String author;
private String publisher;
public static Book createBookWithName(String name) {
Book book = new Book();
book.name = name;
return book;
}
public static Book createBookWithAuthor(String author) {
Book book = new Book();
book.author = author;
return book;
}
}
public final class Boolean implements java.io.Serializable, Comparable<Boolean> {
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
...
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ก ๊ฐ์ฒด ์์ ๋ฏธ๋ฆฌ ์ ์๋ static final ์์ ๊ฐ์ฒด๋ฅผ ๋ฐํ.
๋งค๋ฒ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์๋๋ค.
๋ฆฌํด ํ์
์ ์ธํฐํ์ด์ค๋ก ์ง์ ํ๊ณ , ์ค์ ๋ก๋ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ฅผ ๋ฆฌํดํจ์ผ๋ก์
๊ตฌํ์ฒด์ API ๋ ๋
ธ์ถ์ํค์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค.
java.util.Collections ๋๋ฐ ํด๋์ค
-> ์๋ฐ 8 ์ด์ ์๋ ์ธํฐํ์ด์ค ๋ด์ ์ ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง ์ ์์๊ธฐ ๋
public class Collections {
// ์ธ์คํด์ค ์์ฑ๋ถ๊ฐ
private Collections() {
}
// ์ ์ ํํ ๋ฆฌ ๋ฉ์๋
public static <T> List<T> unmodifiableList(List<? extends T> list) {
return (list instanceof RandomAccess ?
new UnmodifiableRandomAccessList<>(list) :
new UnmodifiableList<>(list));
}
// ๊ตฌํ์ฒด : non-public ์ด๋ค.
static class UnmodifiableList<E> extends UnmodifiableCollection<E> implements List<E> {
...
}
}
๊ตฌํ์ฒด๋ฅผ ์จ๊ธฐ๊ณ public ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ก ์ ๊ณตํ๋ฏ๋ก API ๋ฅผ ์๊ฒ ๋ง๋ค ์ ์๋ค. ๋ํ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ตํ์ผ ํ๋ ๊ฐ๋ ๊ณผ ๋์ด๋๊ฐ ๋ฎ์์ก๋ค. (๊ฐ๋ ์ ๋ฌด๊ฒ๊ฐ ๋ฎ์์ง๋ค.)
์๋ฐ 8 ๋ฒ์ ์ดํ๋ก๋ ์ธํฐํ์ด์ค์์ public static ๋ฉ์๋๋ฅผ ์ถ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค๋ก ๋ง๋ค ์ ์๋ค. private static ๋ฉ์๋๋ ์๋ฐ 9 ๋ถํฐ ์ด์ฉํ ์ ์๋ค.
์์ ์์์์ unmodifialbeList() ์ ์ธ์ list ๊ฐ RandomAccess ์ ์ธ์คํด์ค์ธ์ง ์๋์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค.
6. ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ์์ ์๋ ๋ฐํํ ๊ฐ์ฒด์ ํด๋์ค๊ฐ ์กด์ฌํ์ง ์์๋ ๋๋ค.
์๋น์ค ์ ๊ณต์ ํ๋ ์์ํฌ : ์๋น์ค์ ๊ตฌํ์ฒด๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๊ณตํ๋ ๊ฒ์ ํ๋ ์์ํฌ๊ฐ ํต์ ํ์ฌ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌํ์ฒด๋ก๋ถํฐ ๋ถ๋ฆฌ
- ์๋น์ค ์ ๊ณต์ ํ๋ ์์ํฌ์ ๊ตฌ์ฑ์์
- ์๋น์ค ์ธํฐํ์ด์ค : ๊ตฌํ์ฒด์ ๋์์ ์ ์
- ์๋น์ค ๋ฑ๋ก API : ์ ๊ณต์๊ฐ ๊ตฌํ์ฒด๋ฅผ ๋ฑ๋กํ ๋ ์ฌ์ฉ
- ์๋น์ค ์ ๊ทผ API : ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค์ ์ธ์คํด์ค๋ฅผ ์ป์ ๋ ์ฌ์ฉ
- ์๋น์ค ์ ๊ณต์ ์ธํฐํ์ด์ค : ์๋น์ค ์ธํฐํ์ด์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ํฉํฐ๋ฆฌ ๊ฐ์ฒด
// jdbc ์ฐ๊ฒฐํ๋ ์ฝ๋
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = null;
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORA92", "scott", "tiger");
Statement..
์์ ์ฝ๋์์ Connection ์ด ์๋น์ค ์ธํฐํ์ด์ค,
๋ฆฌํ๋ ์
์ ์ด์ฉํด ํด๋์ค๊ฐ ๋ก๋๋ ๋ ๋๋ผ์ด๋ฒ๋ฅผ ๋ฑ๋กํ๋ DriverManager.registerDriver ๊ฐ ์ ๊ณต์ ๋ฑ๋ก API,
์๋น์ค ์ธํฐํ์ด์ค์ธ Connection ์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํ๋ DriverManager.getConnection ์ด ์๋น์ค ์ ๊ทผ API ์ญํ ์ ํ๊ฒ ๋๋ค.
๋๋ผ์ด๋ฒ๊ฐ ์๋น์ค ์ ๊ณต์ ์ธํฐํ์ด์ค ์ญํ ์ ํ๋ค.
๋๋ผ์ด๋ฒ๋ ์ด๋ค ๋๋ผ์ด๋ฒ๊ฐ ์ฐ์ผ์ง ๋ชจ๋ฅธ๋ค.
oracle, mysql .. ๊ฐ DBMS ์ ๋ง๋ Driver ๊ฐ ์๊ณ ,
Class.forName() ์ ์ธ์๋ฅผ ํตํด ์๋ง์ ๋๋ผ์ด๋ฒ๋ฅผ ๋ฑ๋กํ๊ณ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ป๋๋ค.
์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์์ฑํ๋ ์์ ์๋ ๋ฐํํ ๊ฐ์ฒด์ ํด๋์ค๊ฐ ์กด์ฌํ์ง ์์๋ ๋๋ค ๋ผ๋ ๋ง์ ์๋ฏธ๋
๋ฐํํ ๊ฐ์ฒด๋ฅผ ํํ ๋ฆฌ ๋ฉ์๋ ๋ฐฉ์์ ์ด์ฉํ์ฌ ๋ง๋ค๊ธฐ ๋๋ฌธ์, JDBC ์์๋ ๊ฐ ์ํฉ์ ๋ฐ๋ผ์ ํํ ๋ฆฌ ๋ฉ์๋ ๋ด์ฉ๋ง ๋ฐ๊ฟ์
์ฐ๊ฒฐ์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ป์ ์ ์๋ค๋ ๋ง์ด๋ค.
-
์์์ ํ๋ ค๋ฉด public, protected ์์ฑ์๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์, ์ ์ ํํ ๋ฆฌ ๋ฉ์๋๋ง ์ ๊ณตํ๋ฉด ํ์ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋ค.
- java.util.Collections ๋ก ๋ง๋ ๊ตฌํ์ฒด๋ ์์ํ ์ ์๋ค.
-
์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค.
- ์์ฑ์์๋ ๋ฌ๋ฆฌ Javadoc ๋ฌธ์์์ ๋ฐ๋ก ๋ชจ์์ฃผ๋ ๊ธฐ๋ฅ์ด ์๋ค.
- from : ๋งค๊ฐ๋ณ์ ํ๋๋ก ํ๋์ ์ธ์คํด์ค ๋ง๋ฆ
- of : ์ฌ๋ฌ ๋งค๊ฐ๋ณ์๋ก ์ธ์คํด์ค ๋ง๋ฆ
- valueOf : from ๊ณผ of์ ์์ธํ ๋ฒ์
- getInstance, instance : (๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ๊ฑฐ๋ ๊ฐ์ง ์๊ฑฐ๋) ๊ฐ์ ์ธ์คํด์ค์์ ๋ณด์ฅํ์ง ์๋ ์ธ์คํด์ค ๋ฐํ
- create, newInstance : ๋งค๋ฒ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๋ฐํ
- getType : ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋, ํด๋น ํด๋์ค๊ฐ ์๋ ๋ค๋ฅธ ํด๋์ค์์ ์์ฑํ ๋ ์ฌ์ฉ
- newType : getType ๊ณผ ๋์ผ
- Type : getType, newType ์ ๊ฐ๋ต๋ฒ์