Я зіткнувся з цікавою ситуацією, пов’язаною зі статичними загальними методами. Це код:
class Foo<E>
{
public static <E> Foo<E> createFoo()
{
// ...
}
}
class Bar<E>
{
private Foo<E> member;
public Bar()
{
member = Foo.createFoo();
}
}
Чому я не повинен вказувати аргументи типу у виразі Foo.createFoo()
? Це якийсь тип виводу? Якщо я хочу бути явним щодо цього, як я можу вказати аргумент типу?
7
Я рекомендую вам змінити параметр типу E методу createFoo. Тому що параметр типу E класу Foo відрізняється від параметра типу E методу createFoo ().
—
Gursel Koca
@GurselKoca Він міг явно зробити member = Foo. <E> createFoo (); вимагаючи, щоб вони були такими ж, як час компіляції.
—
Джордж Ксав'є