假设定义了以下类:
class Shape { }
class Circle extends Shape { }
class Rectangle extends Shape { } // 1
您可以编写一个通用方法来绘制不同的形状:
public static <T extends Shape> void draw(T shape) { } // 2
Java 编译器将 T 替换为 Shape:
public static void draw(Shape shape) { } // 3
我的问题是,如果我们在类中直接定义 // 3 那么我们仍然可以传递Shape
,Circle
并Rectangle
引用 //3 处的方法。那么为什么我们需要编写 // 2 泛型方法,其类型参数<T extends Shape>
与 //3 不合时宜?
您可以使用相同的示例参考此链接:http: //docs.oracle.com/javase/tutorial/java/generics/genMethods.html