Я видел различные потоки, и большинство из них говорят о значениях по умолчанию, например, примитивы инициализируются с помощью 0, а обертки инициализируются с помощью нулевой. Мой вопрос конкретен и с примером, а не просто с концепцией.
Мои занятия:
public class Subject {
int subCode;
int marks;
long CGPA;
public Subject(int subCode, int marks, long CGPA) {
this.subCode = subCode;
this.marks = marks;
this.CGPA = CGPA;
}
}
Теперь вот моя карта в основном классе:
Map<Integer,List<Subject>> map1 = new HashMap<>();
map1.put(Integer.valueOf(1),new Subject(001,70,29l));
Я получаю ошибку в 29l
, я пробовал разные формы, такие как Long.Valueof(29)
, но они не работают.
Может ли кто-нибудь рассказать мне о концепции, когда в поле класса есть примитивные типы, а затем как создать экземпляр класса с помощью конструктора.
Note: I am fully aware that i should use Wrapper class here, but now i wanna try with primitive, it is just for my learning.
Спасибо.
у вас есть List<Subject>
... но добавляем new Subject(001,70,29l)
...
Ваша карта содержит значение типа List, но вы пытаетесь поместить значение типа Subject..
Обратите внимание, что вы не должны писать свой первый параметр как 001
, если только вам действительно не нужно восьмеричное число.
Примитив 29L
является наиболее правильным, так как параметр объявлен примитивом long
(а не Long
объектом). Всегда используйте прописную букву L
в 29L
, так как строчная буква l очень легко неправильно читается для цифры 1.
Здесь:
Map<Integer,List<Subject>> map1 = new HashMap<>();
Вы заявляете, что стоимость карты: списки.
Затем вы пытаетесь добавить экземпляр Один предметного класса!
map1.put(Integer.valueOf(1),new Subject(001,70,29l));
Не могу работать!
map1.put(1, Collections.singletonList(new Subject(001,70,29l)));
map1.put(1, Arrays.asList(new Subject(001,70,29l)));
map1.put(1, new ArrayList<>(Arrays.asList(new Subject(001,70,29l))));
должно все работать. (примечание: я не запускал приведенное выше через компилятор, поэтому игнорируйте глупые опечатки и тому подобное. И: первые два примера дадут вам строки, которые нет позволят вам добавлять/удалять элементы из этих списков)
И ваша формулировка подразумевает неправильное представление с вашей стороны: список не является «оболочкой». Это контейнер. Коробка, в которую вы складываете вещи. И когда вы говорите: моя карта должна содержать ящики для яиц, то эта карта хочет ящики для яиц, а не отдельные яйца!
"Я получаю ошибку в 29l" Что за ошибка? Кроме того, ваша карта говорит, что она принимает список тем, но вы предоставляете только одну.