2017-02-23 38 views
-4

Внутри моего Mappable Список классов, у меня есть список a = Integer, и я хочу добавить int в этот список.добавление int в список целых чисел

Обычно list.add(int) будет работать из-за автоматического бокса java, но мне интересно, почему это не работает для меня здесь.

Код объяснить: Во время строительства MappableList я могу передать в переменное число параметров Int, и я хочу, чтобы добавить их все в список Integer

public class MappableList<Integer>{ 

private final List<Integer> list;  
public MappableList(int... numbers){ 
    list = new ArrayList<Integer>(); 
    for(int i : numbers){ 
     list.add(4); 
    }  
    } 
} 
+1

У вас есть 9 строк кода, и вы не смогли повторно проверить эти строки, если они имеют смысл? Как 'list.add (4);' имеет смысл в соответствии с вашим желаемым поведением? – Tom

+0

Nice [MVCE] (http://stackoverflow.com/help/mcve) (после редактирования), спасибо. –

ответ

0

Вы не должны использовать Integer в качестве параметра формального типа. Если вы хотите, чтобы ваш класс был общим, я предлагаю E или T как параметр типа; обычно используются названия одной буквы:

public class MappableList<E> { 

    private final List<E> list; 

    public MappableList(E... numbers) { 

     list = new ArrayList<E>(); 

     for (E i : numbers) { 
      list.add(i); 
     } 
    } 
} 

Если тип элемента Integer всегда, вам не нужен ваш класс, чтобы быть универсальным, конечно. Просто удалите параметр типа из объявления:

public class MappableList { 

Оставьте все остальное (в том числе <Integer> после List и ArrayList) как (вы можете исправить номер 4 в цикле, хотя).

Ваша проблема заключалась в том, что с MappableList<Integer> внутри вас был присвоен класс Integer, который является типом параметра, а не стандартным классом java.lang.Integer, который, я считаю, вы намеревались.

+0

Спасибо, я так понимаю сейчас –

3

она работает !!

вы вставляете ВСЕГДА одинаковое значение

for(int i : numbers){ 
    list.add(4); 
}  

сделать вместо

list.add(i); 
+0

Жаль, что я оставил что-то после того, как я добавить общественного класса MappableList он не работает –

+0

Я знаю, что вы закрепились, что, кажется, ошибка в коде Аскера. Тем не менее, вы можете захотеть увидеть, что «ваш код работает отлично для меня» ответы приемлемы?] (Http://meta.stackoverflow.com/questions/277923/are-your-code-works-fine-for-me-answers неприемлемо) :-) –

1
private final List<Integer> list;  
public MappableList(int... numbers){ 

    list = new ArrayList<Integer>();  

    for(int i : numbers){ 
     list.add(i); 
    }  
} 

Теперь он будет работать

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