for-loop & ArrayList <Integer> - PullRequest
       11

for-loop & ArrayList <Integer>

2 голосов
/ 29 сентября 2011

Это простое упражнение из главы 2 Sun Certified Java Associate Study Guide, с которой у меня возникли проблемы. Когда я пытаюсь скомпилировать класс ниже, я получаю следующее сообщение об ошибке:

"ошибка: тип ArrayList не принимает параметры ArrayList hookSizesList = new ArrayList <>; "

import java.lang.Iterable;

public class ArrayList {
public static void main(String[] args) {

    Integer hookSizeList;
    ArrayList<Integer> hookSizesList = new ArrayList<Integer>();
    hookSizesList.add(1);
    hookSizesList.add(4);
    hookSizesList.add(5);

    for (Integer hook: hookSizesList) System.out.print(hook + " ");
}
}

Буду очень признателен за любую помощь заранее, спасибо!

Ответы [ 7 ]

6 голосов
/ 29 сентября 2011

у вас есть многочисленные ошибки, вот обновленный фрагмент

import java.util.*;

public class Numbers {
    public static void main(String[] args) {
        List<Integer> hookSizesList = new ArrayList<Integer>();
        hookSizesList.add(1);
        hookSizesList.add(4);
        hookSizesList.add(5);

        for (Integer hook: hookSizesList) {
             System.out.print(hook + " ");
        }
    }
}
3 голосов
/ 29 сентября 2011

Вы, вероятно, хотите использовать класс java.util.ArrayList.Но так как вы назвали свой собственный класс ArrayList, это класс, который использует ваша программа, и ваш класс ArrayList не принимает никаких общих параметров.Измените название вашего класса и импортируйте java.util.ArrayList.

2 голосов
/ 29 сентября 2011

Ну, есть некоторые странные вещи:

  1. Сначала вы не импортируете java.util.ArrayList.
  2. Вам не нужно импортировать java.lang.Iterable, потому что классыиз java.lang импортируются автоматически.
  3. Ваш класс имеет то же имя ArrayList, и это не очень хорошая идея.Когда вы пишете "ArrayList hookSizesList = new ArrayList ();"вы инициализируете java.util.ArrayList, но ваш собственный класс, который не является универсальным классом.Попробуйте сделать:

import java.util.ArrayList;

public class MyArrayList {

public static void main(String[] args) {
Integer hookSizeList; //<--looks useless
ArrayList<Integer> hookSizesList = new ArrayList<Integer>();
hookSizesList.add(1);
hookSizesList.add(4);
hookSizesList.add(5);

for (Integer hook: hookSizesList) System.out.print(hook + " ");
}
}
1 голос
/ 29 сентября 2011

Создаваемый вами класс называется ArrayList.

public class ArrayList {

Класс, о котором идет пример, - это java.util.ArrayList.

Измените имя вашего класса и импортируйте java.util.ArrayList.

0 голосов
/ 29 сентября 2011

Вы должны использовать другое имя для вашего класса. Переименуйте ваш класс из ArrayList в другое.

0 голосов
/ 29 сентября 2011

Класс ArrayList, определенный в вашем коде (не java.util.ArrayList<E>), не определяет никакого параметра универсального типа, поэтому вы не можете использовать new ArrayList<Integer>(), а только new ArrayList() (то же самое для объявления переменной).

0 голосов
/ 29 сентября 2011

Ваш класс не использует генерики, поэтому вы не можете параметризовать ArrayList с <Integer>. Кроме того, не похоже, что вы реализовали метод add() или реализовали Iterable или что-то еще в этом отношении. Но для решения общей проблемы вам необходимо иметь объявление класса, например: public class ArrayList<E>

Возможно, вы пытались import java.lang.ArrayList;? В этом случае вы можете подумать о переименовании своего класса в другое.

...