LINUX.ORG.RU

[Java] Что я делаю не так?

 


0

1

Привет! Итак, суть проблемы такова: я реализую класс «множество целых» (учебный пример). Пишу конструктор по умолчанию. Вот его код

public LinkedSet()
    {
        list = new LinkedList<Integer>();
        int[] typ = new int[10];
        for(int i = 0; i < 10; i++)
        {
            value = new Integer(i);
            list.add(value);
        }
    }

На строчке инициализации поля value возникает ошибка компиляции " unexpected type found : type parameter Integer required: class"

Что собственно не так?

Ответ на: комментарий от CARS

Сейчас

public class LinkedSet<Integer>  extends LinkedList<Integer> {
    private LinkedList<Integer> list;
    private  Integer value;
    
    public LinkedSet()
    {
        list = new LinkedList<Integer>();
        int[] typ = new int[10];
        for(int i = 0; i < 10; i++)
        {
            value = new Integer(i);
            list.add(value);
        }
    }
    
    public LinkedSet(Collection<Integer> items)
    {
        super(items);
    }
    
    public boolean  addItem(Integer item)
    {
        boolean res = list.add(item);
        return res;
    }
    
    public int power()
    {
        return list.size();
    }
    
    public boolean  deleteItem(Integer item)
    {
        if(this.containsList(item))
        {
            list.remove(item);
            return true;
        }
        return false;
    }
    
    private boolean  containsList(Integer item) 
    {
        for(int i = 0; i < list.size(); i++)
        {
            if(list.get(i) == item)
                return  true;
        }
         return false;
    }
    
    public void printAll()
    {
        for(int i = 0; i < list.size(); i++)
        {
            System.out.print(list.get(i));
        }
    }
}
LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Пробовал. Та же ошибка. Я уже просто в растерянности. Проявляется как на JDK 1.5, так и на JDK 1.7

LongLiveUbuntu ★★★★★
() автор топика

например

> value = Integer.valueOf(i);

x0r ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

public class LinkedSet<Integer> extends LinkedList<Integer> {

В первой строчке явно ошибка.

Попробуйте что-то типа этого:

public class LinkedSet<T>  extends LinkedList<T> {
CARS ★★★★
()
Ответ на: комментарий от WFrag

Вот что значит внимательность.

To ТС: этот человек прав. У тебя в Generic торчит Integer. Непонятно зачем тебе это, но я догадываюсь что ты пытаешься сделать специализацию. Так вот. Java так НЕ УМЕЕТ, информация о дженериках стирается. Для решения проблемы используй C# или C++

vertexua ★★★★★
()

Отвечаю на вопрос в заголовке.
Ответ: Ты используешь Джаву.
Sapienti Sat.

Vamp
()
Ответ на: комментарий от LongLiveUbuntu

но все равно делай Integer.valueOf(1) вместо new Integer(1)

maxcom ★★★★★
()
Ответ на: комментарий от vertexua

Хотя с появлением новых коллекций можно было бы и обновить. Или дополнить отдельно, чтобы совместимость не поломать

vertexua ★★★★★
()

А мне одному кажется странным наследоваться от LinkedList и в поле класса добавлять LinkedList, который затем и используется? Причём второй конструктор инициализирует список в родительском классе, в то время как все методы работают со списком в поле класса?

roy ★★★★★
()

> Что я делаю не так?

Java

нутыпонелда

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.