Tôi có một số lớp trừu tượng mỗi superclassing ba hoặc bốn người cụ thể và có dạng:Java - Collection.Sort qua giao diện Objects
public abstract class TypeOfMapObject extends IrrelevantClass implements Serializable, MapObject, Comparable<MapObject>
{
//irrelevant stuff
@Override
public int compareTo(MapObject m)
{
//specific algorithm for natural ordering
}
}
Ở những nơi khác trong mã của tôi Tôi có một ArrayList<MapObject>
(mà đang được dân cư chính xác, tôi đã kiểm tra) được gọi là tempMapObjectsArray
Tôi muốn sắp xếp rằng ArrayList
sử dụng Collections.sort(tempMapObjectsArray)
(hoặc, thay vào đó, tôi muốn sắp xếp ArrayList
và có vẻ như Collections.sort()
là cách tốt nhất để làm điều đó. Cách cụ thể được sắp xếp không quan trọng) .
Nó không biên soạn và đưa ra thông điệp (trong Netbeans):
no suitable method found for sort(java.util.ArrayList<Model.MapObject>)
method java.util.Collections.<T>sort(java.util.List<T>,java.util.Comparator<? super T>) is not applicable
(cannot instantiate from arguments because actual and formal argument lists differ in length)
method java.util.Collections.<T>sort(java.util.List<T>) is not applicable
(inferred type does not conform to declared bound(s)
inferred: Model.MapObject
bound(s): java.lang.Comparable<? super Model.MapObject>)
Dường như tôi đang định sai chung trong lớp TypeOfMapObject
, nhưng đây là lần đầu tiên tôi đã thực sự sử dụng Generics và nó đạt đến giai đoạn mà tôi chỉ đơn giản là cố gắng nhiều hơn hoặc ít hơn một cách ngẫu nhiên. Tôi đang đọc qua các tutorial nhưng cho đến nay nó chỉ đơn giản là không "nhấp vào" những gì tôi đang làm sai.
EDIT: Mỗi lớp con của các lớp trừu tượng khác nhau cần phải so sánh với nhau - vì vậy nếu tôi có lớp trừu tượng TypeofMapObject1
, TypeOfMapObject2
v.v ... thì tôi cần có thể so sánh phân lớp 1 với lớp con 2.
Khi bạn nói "Nó đang ném lên ..." bạn có nghĩa là đoạn mã trên biên dịch và bạn nhận được ngoại lệ trong thời gian chạy? –
Không, xin lỗi vì không rõ ràng. Đó là một lỗi thời gian biên dịch. Đã chỉnh sửa để phản ánh – MrB