Как инициализировать объект класса с примитивными типами

Я видел различные потоки, и большинство из них говорят о значениях по умолчанию, например, примитивы инициализируются с помощью 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.

Спасибо.

"Я получаю ошибку в 29l" Что за ошибка? Кроме того, ваша карта говорит, что она принимает список тем, но вы предоставляете только одну.

takendarkk 28.05.2019 16:04

у вас есть List<Subject>... но добавляем new Subject(001,70,29l)...

Eugene 28.05.2019 16:04

Ваша карта содержит значение типа List, но вы пытаетесь поместить значение типа Subject..

Chetan Kinger 28.05.2019 16:05

Обратите внимание, что вы не должны писать свой первый параметр как 001, если только вам действительно не нужно восьмеричное число.

Gyro Gearless 28.05.2019 16:10

Примитив 29L является наиболее правильным, так как параметр объявлен примитивом long (а не Long объектом). Всегда используйте прописную букву L в 29L, так как строчная буква l очень легко неправильно читается для цифры 1.

Ole V.V. 28.05.2019 16:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
128
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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))));

должно все работать. (примечание: я не запускал приведенное выше через компилятор, поэтому игнорируйте глупые опечатки и тому подобное. И: первые два примера дадут вам строки, которые нет позволят вам добавлять/удалять элементы из этих списков)

И ваша формулировка подразумевает неправильное представление с вашей стороны: список не является «оболочкой». Это контейнер. Коробка, в которую вы складываете вещи. И когда вы говорите: моя карта должна содержать ящики для яиц, то эта карта хочет ящики для яиц, а не отдельные яйца!

Другие вопросы по теме