Java のジェネリック メソッドを理解しようとしています。次のコードがあるとします。
public class GenericTest {
interface Shape {
public long area();
}
public static class Triangle implements Shape
{
private long base, height;
public long area() { return (base * height) / 2; }
}
public static class Rectangle implements Shape
{
private long width, height;
public long area() { return width * height; }
}
public <T extends Shape> long area1(T shape)
{
return shape.area();
}
public long area2(Shape shape)
{
return shape.area();
}
}
なぜarea2の代わりにarea1を使用/実装する必要があるのか わかりません/理解できません(またはその逆)。何か不足していますか?どちらの方法も同じことをしませんか?
Javaのジェネリックに関して少し混乱しました