Если у меня есть класс Foo:
public class Foo<T> {
public Foo(T t) {
//do something
}
public static <E> void bar(E e) {
//do something
}
}
Почему Foo.bar("String"); делает вывод, что E является строкой (и поэтому не выдает предупреждение компилятора), но new Foo("String"); не означает, что T является строкой?