Tôi đã gặp một tình huống tò mò liên quan đến các phương pháp chung tĩnh. Đây là mã:
class Foo<E>
{
public static <E> Foo<E> createFoo()
{
// ...
}
}
class Bar<E>
{
private Foo<E> member;
public Bar()
{
member = Foo.createFoo();
}
}
Tại sao tôi không phải chỉ định bất kỳ đối số kiểu nào trong biểu thức Foo.createFoo()
? Đây có phải là một loại suy luận kiểu? Nếu tôi muốn rõ ràng về nó, tôi có thể chỉ định đối số kiểu như thế nào?
7
Tôi khuyên bạn nên thay đổi tham số kiểu E của phương thức createFoo. Bởi vì, tham số kiểu E của lớp Foo khác với tham số kiểu E của phương thức createFoo ().
—
Gursel Koca
@GurselKoca Anh ấy rõ ràng có thể làm member = Foo. <E> createFoo (); yêu cầu chúng giống như thời gian biên dịch.
—
George Xavier