βΆ μ λ€λ¦ λ©μλ νμ©νκΈ°
λ©μλμ 맀κ°λ³μλ₯Ό μλ£ν 맀κ°λ³μλ‘ μ¬μ©νλ κ²½μ°μ λν΄μ μμ보μ. λν μλ£ν 맀κ°λ³μκ° νλ μ΄μμΈ κ²½μ°λ μ΄ν΄λ³΄μ. μ λ€λ¦ λ©μλμ μΌλ° νμμ λ€μκ³Ό κ°λ€.
λ°νν μμ μ¬μ©νλ <μλ£ν 맀κ°λ³μ>λ μ¬λ¬ κ°μΌ μ μμΌλ©°, μ΄λ λ©μλ λ΄μμλ§ μ ν¨νλ€.
β
β
Point.java
package generics;
public class Point<T, V> {
T x;
V y;
Point(T x, V y) {
this.x = x;
this.y = y;
}
public T getX() { // μ λ€λ¦ λ©μλ
return x;
}
public V getY() { // μ λ€λ¦ λ©μλ
return y;
}
}
package generics;
public class GenericMethod {
public static <T, V> double makeRectangle(Point<T, V> p1, Point<T, V> p2) {
double left = ((Number) p1.getX()).doubleValue();
double right = ((Number) p2.getX()).doubleValue();
double top = ((Number) p1.getY()).doubleValue(); // μ΄λ€ μλ£νμ΄ λ€μ΄μ€λλΌλ doubleλ‘ λ³ν.
double bottom = ((Number) p2.getY()).doubleValue(); // Numberλ‘ κ°μ Έμμ doubleλ‘ λ³ν.
double width = right - left;
double height = bottom - top;
return width * height;
}
public <T> void test(T t) { // ν΄λμ€μ μ λ€λ¦μ΄ μμΌλ―λ‘ λ©μλ μ체μ μ μλ₯Ό ν΄μ€.
} // λ°ννμ μ°κΈ° μ μ μ λ€λ¦ νμ
μ μ μ΄μ€μΌ νλ€. κ·ΈλμΌ μ λ€λ¦ λ©μλκ° λ¨ !
public static void main(String[] args) {
Point<Integer, Double> p1 = new Point<Integer, Double>(0, 0.0); // κ°μ²΄λ₯Ό μμ±μμΌμΌν¨
Point<Integer, Double> p2 = new Point<>(10, 10.0); // κ°μ²΄λ₯Ό μμ±μμΌμΌν¨
double rect = GenericMethod.<Integer, Double>makeRectangle(p1, p2);
System.out.println("λ μ μΌλ‘ λ§λ€μ΄μ§ μ¬κ°νμ λμ΄λ " + rect + "μ
λλ€.");
}
}
<μ€ν κ²°κ³Ό>
βGenericMethod ν΄λμ€λ μ λ€λ¦ ν΄λμ€κ° μλλ€. μ λ€λ¦ ν΄λμ€κ° μλλΌλ λ΄λΆμ μ λ€λ¦ λ©μλλ₯Ό ꡬνν μ μλ€. μ λ€λ¦ λ©μλμΈ makeRectangle( ) λ©μλλ staticμΌλ‘ ꡬννλ€. makeRectangle( ) λ©μλμμ μ¬μ©νλ Tμ Vλ makeRectangle( ) λ©μλ λ΄λΆμμλ§ μ ν¨νκ² μ¬μ©ν μ μλ€.
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java-κΈ°μ΄] κ°λ μ‘κΈ° 3 (κ³΅λΆ κΈ°λ‘) κ³μ μμ±μ€ (0) | 2021.02.21 |
---|---|
[Java-κΈ°μ΄] μκ³ λ¦¬μ¦ μμ (νμ μμ°¨) (0) | 2021.02.21 |
[Java-κΈ°μ΄] μ λ€λ¦ (0) | 2021.02.21 |
[Java-κΈ°μ΄] Class ν΄λμ€ (0) | 2021.02.21 |
[Java-κΈ°μ΄] Wrapper ν΄λμ€ (0) | 2021.02.21 |
λκΈ