public class method
{
private static class Foo
{
public void hello() { System.out.println("Foo"); }
}
private static class Bar
{
public void hello() { System.out.println("Bar"); }
}
private static <T> void hello(T typ)
{
typ.hello();
}
public static void main(String args[])
{
Foo foo = new Foo();
Bar bar = new Bar();
hello(foo);
hello(bar);
}
}
ここでジェネリクスに関する他の質問を見てきましたが、そこにあるすべてのことを見て、私が書いたコードに適用したにもかかわらず、Java コードにまだ問題があります。私が抱えている問題を上記のコードに煮詰めました。上記の codd をコンパイルしようとすると、次のエラーが発生します。
method.java:15: error: cannot find symbol
typ.hello();
^
symbol: method hello()
location: variable typ of type T
where T is a type-variable:
T extends Object declared in method <T>hello(T)
ジェネリックを使用して設計されていないことをしようとしている可能性がありますが、ドキュメントの理解に基づいて、これは機能するはずです。もちろん、私はこのようなことができるという考えでドキュメントを読みました。それは確かに私の理解に影響を与えたかもしれません.
ありがとう