- μμ μ ꡬννλ ν΄λμ€κ° νΉμ μμ±μ κ°μ§μ λνλ΄λ μΈν°νμ΄μ€
- μΆμ λ©μλλ , νλλ , default, static λ©μλλ μ무κ²λ μλ€.
- Cloneable, Serializable κ°μ μΈν°νμ΄μ€
- ν΄λΉ μμκ° νΉμ μμ±μ κ°μ§μ λνλ΄λ μλν μ΄μ
- @Override, @FunctionalInterface, @SafeVarargs, @Native
- λ§μ»€ μΈν°νμ΄μ€μ λ§μ»€ μλν μ΄μ λͺ¨λ ν΄λμ€κ° μ΄λ€ μμ±μ κ°μ§λ€λ νμλ₯Ό ν μ μλ€.
- λ§μ»€ μΈν°νμ΄μ€λ νμ μΌλ‘ μ¬μ©νμ¬ μ»΄νμΌνμ μ μ€λ₯λ₯Ό κ²μΆν μ μλ€.
- λ§μ»€ μλν μ΄μ μ λ°νμμμμΌ μ€λ₯λ₯Ό κ²μΆν μ μλ€.
[κ°μ²΄λ₯Ό νμΌμ μμ±νλ λ©μλ]
// 맀κ°λ³μλ‘ Serializeable νμ
μ λ°λλ‘ νλ€.
public static void newWriteObject(Serializable object, String path) {
File file = new File(path);
try (ObjectOutputStream oops = new ObjectOutputStream(new FileOutputStream(file))) {
oops.writeObject(object);
} catch (IOException e) {
System.out.println("λ°νμμ μλ¬ λ°μ");
}
}
[λ©μλ μ¬μ©]
- μΈμλ‘ λκΈ°λ €λ MeetCoder κ°μ²΄λ Serializable μ ꡬννμ§ μμλ€ !
- κ²°κ³Όλ‘ μλμ κ°μ΄ μ»΄νμΌμ€λ₯κ° λ리λ₯Ό μΉλ€.
- ν΄κ²°λ²μΌλ‘λ MeetCoder ν΄λμ€μ Serializable μ implements νμ¬ νμνμ μΌλ‘ λ§λ€κΈ°λ§ νλ©΄ λλ€.
[λ§μ»€ μλν μ΄μ ]
- λ°λ©΄ μ΄λ₯Ό λ§μ»€ μλν μ΄μ μΌλ‘ ν΄κ²°νλ €λ©΄, μλν μ΄μ νλ‘μΈμλ₯Ό μ΄μ©νμ¬ instanceof λ₯Ό μ΄μ©νμ¬ λ°νμμμΌ μλ¬λ₯Ό κ²μΆν μ μλ€.
writeObject λ©μλμμλ writeObject0(obj, false);
λ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό μμ±νλ€.
private void writeObject0(Object obj, boolean unshared)
throws IOException {
...
} else if (obj instanceof Serializable) {
writeOrdinaryObject(obj, desc, unshared);
} else {
if (extendedDebugInfo) {
throw new NotSerializableException(
cl.getName() + "\n" + debugInfoStack.toString());
} else {
throw new NotSerializableException(cl.getName());
}
}
...
- Object λ‘ κ°μ²΄λ₯Ό λ°μ ν
- μ¬λ¬ 쑰건μ κ²μ¬νκ³ λ§μ§λ§μΌλ‘ Serializable μ ꡬννλμ§ instanceof λ‘ νμ κ²μ¬λ₯Ό νκ³ μλ€.
- λ§μ»€ μΈν°νμ΄μ€κ° νμ μΌλ‘ μΈ μ μλ€λ μ₯μ μ μ΄λ¦¬μ§ λͺ»νκ³ μλ€.
- λ§μ»€ μλν μ΄μ μ @Retention(RetentionPolicy.TYPE) μλν μ΄μ μ ν΅ν΄ ν΄λμ€, μΈν°νμ΄μ€, enum, μλν μ΄μ μλ§ λ¬ μ μλ λ§μ»€λ₯Ό λ§λ€ μ μλ€.
- νμ§λ§ λ§μ»€ μΈν°νμ΄μ€λ μ΄λ³΄λ€ λ μ λ°ν μ νμ λ μ μλ€.
μλ₯Ό λ€μ΄, Person μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μλ§ MeetCoder μ€ν°λμμ΄λΌλ λ§μ»€λ₯Ό λ¬κ³ μΆλ€λ μꡬμ¬νμ΄ μλ€κ³ μκ°ν΄λ³΄μ.
κ·Έλ¬λ©΄ MeetCoder μΈν°νμ΄μ€ Person λ‘ νμ₯νκ³ , MeetCoder μΈν°νμ΄μ€λ₯Ό ꡬννλ©΄ λλ€.
MeetCoderλ₯Ό ꡬνν ν΄λμ€λ μλμΌλ‘ Person μΈν°νμ΄μ€μ νμ νμ
μ΄ λλ κ²μ΄κ³ , MeetCoder κ° λ§μ»€ μΈν°νμ΄μ€μΈ κ²μ΄λ€.
μ± μ μμμμλ Collection μ ꡬνν ν΄λμ€μμλ§ Set μ΄λΌλ λ§μ»€ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν μ μλ€κ³ νλ€.
- λ§νΉνλ €λ κ³³μ΄ ν΄λμ€, μΈν°νμ΄μ€κ° μλ λ.
- μλν μ΄μ μ μ κ·Ή νμ©νλ νλ μμν¬μ μΌλΆμ λ§μ»€λ₯Ό λ¬ λ.
- λ§νΉλ κ°μ²΄λ₯Ό 맀κ°λ³μλ‘ λ°λ λ©μλλ₯Ό μμ±ν μΌμ΄ μμκΉ ? -> [μ] λΌλ©΄ λ§μ»€ μΈν°νμ΄μ€λ₯Ό μ°μ !
- Retention μ΄ ElementType.TYPE μΈ λ§μ»€ μλν μ΄μ μ μ°κ³ μλ€ ? -> λ§μ»€ μΈν°νμ΄μ€λ‘ λ°κΏμ§ κ³ λ―Όν΄λ³΄μ.
[java.util.Collection]