Tôi đã lớp generic sau:generics java biên soạn lỗi
public class GenericClass<E,T extends Comparable<T>>
{
public static <E, T extends Comparable<T>> GenericClass<E, T> create()
{
return new GenericClass<E, T>();
}
private GenericClass()
{
}
}
Và đây là cách tôi chỉ đơn giản là sử dụng nó:
GenericClass<MyClass, Double> set = GenericClass.create();
Eclipse biên soạn cho thấy không có lỗi, tuy nhiên - tòa nhà có kiến cung cấp lỗi sau:
MyClass.java:19: incompatible types; no instance(s) of type variable(s) E,T exist so that GenericClass<E,T> conforms to GenericClass<MyClass,java.lang.Double>
[javac] found : <E,T>GenericClass<E,T>
[javac] required: GenericClass<MyClass,java.lang.Double>
[javac] GenericClass<MyClass, Double> set = GenericClass.create();
Cảm ơn!
Và SortedSetByDoubleValue là ...? –
Đã sửa lỗi ... Tôi đã thay đổi tên lớp để đơn giản – duduamar
Đề xuất của tôi là không sử dụng cùng tên cho các loại chung trong phương thức tạo tĩnh và lớp. Mặc dù về mặt pháp lý về mặt kỹ thuật, nó có thể dẫn đến một số sai lầm điên rồ khó phát hiện. Tôi mạnh mẽ đề xuất thay thế E, T bằng E2 và T2 (hoặc bất kỳ thứ gì) trong toàn bộ định nghĩa create(). –