2013-12-26 3 views
0

. Я знаю, что есть количество похожих сообщений. Ошибка, как я понимаю, означает, что я должен быть более конкретным с типами. Мой код:непроверенные или небезопасные операции. Перекомпиляция с -xlint: непроверенная для получения более подробной информации.

import java.util.*; 
public class Storefront { 
    private LinkedList<Item> catalog = new LinkedList<Item>(); 

    public void addItem(String id, String name, String price, String quant) { 
     Item it = new Item(id, name, price, quant); 
     catalog.add(it); 
    } 

    public Item getItem(int i) { 
      return (Item)catalog.get(i); 
    } 

    public int getSize() { 
     return catalog.size(); 
    } 

    //@SuppressWarnings("unchecked") 
    public void sort() { 
     Collections.sort(catalog); 
    } 
} 

Однако я указать, что LinkedList состоит из объектов типа Item. Когда я скомпилировать его с -xlint, я получаю


warning: unchecked method invocation: method sort in class 
Collections is applied to given types 
Collections.sort(catalog); 

required: List'<'T'>' 

found: LinkedList'<'Item'>' 

where T is a type-variable: 
T extends Comparable'<'? super T'>' declared in method 
'<'T'>'sort'<'List'<'T'>'> 

Как я понимаю, LinkedList реализует List и Item реализует Comparable. Итак, не «требуется» и «найдено» одинаково?

Также я проверял, действительно ли catalog.get(i); является предметом (как говорят некоторые из них, возможно, это вызвало проблему), но это привело к той же ошибке.

+2

Боковой комментарий: Вы не должны бросание в 'возврата (п) catalog.get (I),' – assylias

ответ

5

Вы получаете это предупреждение, если ваш класс Item реализует Comparable, а не Comparable<Item>. Убедитесь, что ваш Item класс определяется следующим образом:

+1

Не забудьте сделать «CompareTo (Пункт I) »(или аналогичный) вместо общего« Объекта ». Очень легко забыть об этом, возвращаясь и обновляя старый код. –

Смежные вопросы

 Смежные вопросы