Javaの汎用メソッドを理解しようとしています。私は、私が代わりにAREA2(またはその逆)のAREA1を実装する/使うべき理由を理解/見ることができません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();
}
}
:次のコードを考えます。何か不足していますか?両方のメソッドが同じことをしないのですか?
それはarea1
メソッドを作成するための正当な理由がないのJava
この場合ジェネリックスを使用することは意味がありません。それが意味をなさないケースは、どのような種類のものを保存しなければならないかわからないときです**。 –
この場合、@ LukasKnuthは、エリアの一般的なバージョンを作成する必要はないと言いました。しかし、現在のOracleのドキュメントには、ジェネリックスの素晴らしい例が示されています。ワイルドカードのジェネリックの例は、混乱を明確にするのにも役立ちます。http://docs.oracle.com/javase/tutorial/extra/generics/methods.html –
私はC++のおおまかなものとしてジェネリックを検討していましたテンプレート。あなたがここで指摘した重要なことは、他の回答から欠けていることです(そして、おそらく私が見逃しているのは、あなたが「**保存するタイプ」を知らないときに使用されるというコンセプトです」 私はその答えを探していました:-) – Xaq