Вызов статических универсальных методов
я столкнулся с любопытной ситуацией, связанной со статическими общими методами. Это код:
class Foo<E>
{
public static <E> Foo<E> createFoo()
{
// ...
}
}
class Bar<E>
{
private Foo<E> member;
public Bar()
{
member = Foo.createFoo();
}
}
почему мне не нужно указывать какие-либо аргументы типа в выражении Foo.createFoo()
? Это какой-то тип вывода? Если я хочу быть явным об этом, как я могу указать аргумент типа?
1 ответ:
Да, это вывод типа, основанный на цели назначения, согласно раздел JLS 15.12.2.8. Чтобы быть явным, вы бы назвали что-то вроде:
Foo.<String>createFoo();