static class Foo<T> {
<R> R get(R value) {
return value;
}
}
static {
{
// Так работает:
Foo<?> foo = new Foo<>();
Long a = foo.get(123L);
}
{
// Так работает:
Foo<String/*любой тип*/> foo = new Foo<>();
Long a = foo.get(123L);
}
{
// А почему так не работает?
Foo foo = new Foo();
Long a = foo.get(123L); // -- incompatible types Long и Object
}
}