λ€νμ± νμ΅ μ μ₯μ. μ§κΈμ λ§€κ°λ³μμ μν λ€νμ±κ³Ό λ λ€νμ±μ λ§λ¨ λ μ₯μ΄ λ€μ΄ μλ€.
κ°λ μ κΈλ‘ μ½κ³ λκΈ°μ§ μκΈ° μν΄, μ»΄νμΌλ¬κ° μ€μ λ‘ λ¬΄μμ λ§κ³ 무μμ νμ©νλμ§λ₯Ό ν μ€νΈλ‘ λ°μλλ€. "μ΄λ‘ μ μ΄λ λ€"κ° μλλΌ "λλ €λ³΄λ©΄ μ΄λ λ€"κ° λ¨λ κ²μ΄ λͺ©νλ€.
Java 21 / Gradle / JUnit 5. ν μ€νΈ 51κ°, μ λΆ ν΅κ³Ό.
./gradlew testν¨ν€μ§λ§λ€ READMEκ° νλμ© μλ€. μ½λλ³΄λ€ λ¨Όμ μ½μΌλΌκ³ μ΄ κ²μ΄λ€.
νμ μ체λ₯Ό μΈμλ‘ λ°λλ€. μ½λλ νμ νλΌλ―Έν°μ λν΄ μ무κ²λ κ°μ νμ§ μκ³ , κ·Έλμ λͺ¨λ νμ μ λν΄ μ³μ μ μλ€.
λ λ¬Έμλ κ°μ μΆμ λ°λνΈμμ λ³Έλ€ β νμ νλΌλ―Έν°κ° μΈμ μ ν΄μ§κ³ μΌλ§λ μ€λ μ¬λκ°.
genericfunction β ν¨μκ° νμ μ λ°μ λ
μκ·Έλμ²λ λΉμΉΈ (T, R)λ§ λ¨κΈ°κ³ , κ·Έ λΉμΉΈμ νΈμΆ μ§μ λ§λ€ μλ‘ μ±μμ§λ€. νΈμΆμ΄ λλλ©΄ νμ
νλΌλ―Έν°λ ν¨κ» λλλ€.
generictype β νμ μ΄ νμ μ λ°μ λ
νμ νλΌλ―Έν°λ νμ μ μ λ μκ° μ ν΄μ Έ κ·Έ κ°μ΄ μ¬λ λ΄λ΄ λ°λΌλ€λλ€. κ·Έλ¦¬κ³ λ°νμμλ μκ±°λ‘ μ§μμ Έ, κ°λΌμ Έ λμ¨ νμ λ€μ΄ λ€μ ν΄λμ€ νλκ° λλ€.
μ μ₯μμλ νμ νλΌλ―Έν°λ₯Ό μλ‘ λ¬΄κ΄ν λΉμΉΈμΌλ‘λ§ λ€λ€λ€. κ·Έλ°λ° μ€μ νμ λ€ μ¬μ΄μλ μ΄λ―Έ μλΈνμ κ΄κ³κ° μλ€. κ·Έ κ΄κ³κ° νμ μμ±μλ₯Ό ν΅κ³Όν λ μ΄λ»κ² λλκ° β μΈ λ¬Έμκ° κ°μ λ¬Όμμ λ€λ₯Έ μΌκ΅΄μ΄λ€.
| λ¬Έμ | 묻λ κ² |
|---|---|
| inheritance | λ¬Όλ €λ°μ λ νμ μΈμλ₯Ό μ λ¬ν κ²μΈκ° κ³ μ ν κ²μΈκ° |
| bound | Tμ λν΄ μ΅μν 무μμ μμμΌ νλκ° |
| variance | Integer <: NumberμΌ λ Cell<Integer>μ Cell<Number>λ λ¬΄μ¨ κ΄κ³μΈκ° |
κ°λ³μ±μ΄ μ΄ μ₯μ ν΅μ¬μ΄λ€. λΆλ³μ μ λ€λ¦μ κ²°ν¨μ΄ μλλΌ μ½κΈ°μ μ°κΈ°λ₯Ό λͺ¨λ νμ©ν λκ°μ΄κ³ , κ·Έ μ¦κ±°κ° λ°°μ΄μ΄λΌλ λ°λ‘λ‘ κ°μ μΈμ΄ μμ λ€μ΄ μλ€.
com.study.polymorphism/
βββ parametric/ λ§€κ°λ³μμ μν λ€νμ±
β βββ genericfunction/ ν¨μκ° νμ
μ λ°λλ€
β β βββ Lists.java
β βββ generictype/ νμ
μ΄ νμ
μ λ°λλ€
β βββ Stack.java νμ
νλΌλ―Έν° νλ
β βββ Pair.java νμ
νλΌλ―Έν° λ
β βββ ObjectStack.java λλΉ - λ§€κ°λ³μκ° μλ μμ
βββ genericsubtyping/ λ λ€νμ±μ λ§λ¨
βββ inheritance/ μ λ€λ¦ ν΄λμ€μ μμ
β βββ Box.java Chest.java νμ
νλΌλ―Έν°λ₯Ό μ λ¬
β βββ StringBox.java νμ
μΈμλ₯Ό κ³ μ - λΈλ¦¬μ§ λ©μλ
βββ bound/ νμ
λ§€κ°λ³μ μ ν
β βββ NumberBox.java μν
β βββ Bounds.java λ€μ€ λ°μ΄λ - κ΅μ°¨ νμ
β βββ Request.java JsonRequest.java μ¬κ· λ°μ΄λ
βββ variance/ κ°λ³μ±
βββ Source.java Sink.java Cell.java κ³΅λ³ / λ°κ³΅λ³ / λΆλ³
βββ Variance.java μ°λ μͺ½μμ λ§λλ λ³μ±
βββ CovariantArrays.java λ°°μ΄μ΄λΌλ λ°λ‘
βββ Capture.java κ²μ¬κΈ°κ° λ¬Όμνλ₯Ό μ¬λ κ³Όμ
ν¨ν€μ§λ₯Ό κ°λ₯΄λ κΈ°μ€μ κ·Έ μ μ΄ λμ§λ λ¬Όμμ΄λ€. ν
μ€νΈλ src/test/java μλ κ°μ κ΅¬μ‘°λ‘ λΆμ΄ μλ€.
- ν μ€νΈ λ¨Όμ . νλ‘λμ μ½λλ μ€ν¨νλ (RED) ν μ€νΈλ₯Ό λμΌλ‘ νμΈν λ€μ μ΄λ€.
- μ μ κ²½λ‘λ§ ν μ€νΈνμ§ μλλ€. λΉ μ»¬λ μ , μ©λ κ²½κ³, null, κΈΈμ΄ λΆμΌμΉ κ°μ μ€ν¨ κ²½λ‘λ ν¨κ» κ³ μ νλ€.
- μ μ±
μ μ½λ μμ κ·Όκ±°μ ν¨κ».
Stackμ null κ±°λΆ,zipμ κΈΈμ΄ λΆμΌμΉ κ±°λΆλ λ λ€ fail-closedμ΄κ³ , μ κ·Έλ κ² κ³¨λλμ§κ° JavaDocμ μ ν μλ€. - JavaDocμ "무μμ"μ΄ μλλΌ "μ".
@param source μμ€ λ¦¬μ€νΈκ°μ λμ΄λ°λ³΅μ λ¬μ§ μλλ€../gradlew javadocμ΄ λ΄λ@paramλλ½ κ²½κ³ λ κ·Έλμ λλ κ²μ΄λ€. - ν μ€ = ν λ¬Έμ₯. μ£Όμμ λ¬Έμ₯ κ²½κ³μμλ§ μ€μ λ°κΎΌλ€. ν λ¬Έμ₯μ κ³ μΉλ©΄ diffμ ν μ€λ§ λ¬λ€.
- λ¬Έμμ μ μ μλ¬ λ©μμ§λ μ€μ λ‘ νμΈν κ²λ§ μ΄λ€. κ° READMEμ μ€ν νκ° κ·Έλ λ€.


