public abstract class A<T> {
    public static void test(A i) { for (String s : i.get()) {} }
    public abstract Iterable<String> get();
}
Why for the code above I get:
incompatible types
required: String
found:    Object
But if I will change argument of test method to A<Object>, it will compile OK? Why undefined generic parameter of variable drops explicit generic parameter of it's method's return type?
 
    