가정하면 다음과 같은 클래스 정의됩니다형 T 매개 변수는
public static <T extends Shape> void draw(T shape) { } // 2
자바 컴파일러는 모양과 T를 대체
class Shape { }
class Circle extends Shape { }
class Rectangle extends Shape { } // 1
당신은 다른 모양을 그리는 일반적인 방법을 쓸 수 있습니다 :
public static void draw(Shape shape) { } // 3
내 질문에 우리 클래스에서 직접 3을 정의하면 우리는 여전히 o // 3의 메소드에 대한 Shape
, Circle
및 Rectangle
참조. 그렇다면 우리는 타입 매개 변수 <T extends Shape>
을 가진 // 2 generic 메쏘드를 쓸 필요가 있습니다. 이것은 분명히 // 3과 같을 것입니다.
당신은 같은 예제이 링크를 참조 할 수 있습니다 : http://docs.oracle.com/javase/tutorial/java/generics/genMethods.html
당신은 할 수 없을 것입니다. 기본적으로 나쁜 예가됩니다. –
// 메소드를 수행 할 필요가 없습니다. 2. 실제 상속의 목적 중 하나는 상속 된 객체의 많은 "모양"을 전달하는 것이므로 // 메소드를 수행하는 것이 더 좋습니다. 그래서이 경우 // 3이 더 합리적입니다. –