Saya telah menjumpai situasi aneh yang melibatkan metode generik statis. Ini kodenya:
class Foo<E>
{
public static <E> Foo<E> createFoo()
{
// ...
}
}
class Bar<E>
{
private Foo<E> member;
public Bar()
{
member = Foo.createFoo();
}
}
Kenapa saya tidak harus menentukan argumen tipe apa pun dalam ekspresi Foo.createFoo()
? Apakah ini semacam jenis inferensi? Jika saya ingin menjelaskannya secara eksplisit, bagaimana saya dapat menentukan argumen type?
7
Saya akan merekomendasikan Anda untuk mengubah parameter tipe E dari metode createFoo. Karena, tipe parameter E kelas Foo berbeda dengan tipe parameter E metode createFoo ().
—
Gursel Koca
@GurselKoca Dia bisa secara eksplisit melakukan member = Foo. <E> createFoo (); membutuhkan waktu yang sama dengan waktu kompilasi.
—
George Xavier