Я получаю значение Integer как 'Integer' в списке в моем коде Java 8 - PullRequest
0 голосов
/ 01 июня 2019

Я новичок в Java.В Java я вижу, что int и Integer разные.int примитив, а Integer класс.Я сделал следующий код.

import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Builder
public class Student {

    private Integer roleNo;
    private String name;
    private String city;


    public static void main(String[] args) {
        // TODO Auto-generated method stub

        List<Student> lstStudent = new LinkedList<Student>();
        lstStudent.add(new Student(111, "aaa", "Moon"));
        lstStudent.add(new Student(333, "ccc", "Sun"));
        lstStudent.add(new Student(222, "bbb", "Jupiter"));


        List<Student> sortedStudents = lstStudent.stream().sorted(Comparator.comparing(Student::getRoleNo))
                                                          .collect(Collectors.toList());

        System.out.println(sortedStudents);

    }

}

Я дал точку останова в списке sortedstudent, и я вижу, что я получаю все значения, но я не получаю целочисленное значение.Это показывает как «целое число» ......... почему?Мне не хватает какой-то ключевой концепции здесь?

enter image description here

1 Ответ

1 голос
/ 01 июня 2019

Этот ответ здесь довольно хорошо объясняет, что происходит:

Целое число - это класс, ничем не отличающийся от любого другого в языке Java.Переменные типа Integer хранят ссылки на объекты Integer, как и любой другой ссылочный (объектный) тип.Integer.parseInt ("1") - это вызов статического метода parseInt из класса Integer (обратите внимание, что этот метод на самом деле возвращает целое, а не целое число).

Точнее говоря, Integer - это класс содиночное поле типа int.Этот класс используется там, где вам нужно, чтобы int обрабатывался как любой другой объект, например, в универсальных типах или в ситуациях, когда вам нужна обнуляемость.

Как @NicholasK говорится в комментариях;если вы развернете объект Integer в своем отладчике, вы увидите, что это объект, который содержит одно поле с именем valu e, в котором хранится фактическое значение, представленное в виде примитива int.

Хотя вы можете сами убедиться в этом в своей IDE, вот скриншот, чтобы предоставить больше контекста для всех тех, кто может наткнуться на этот вопрос с таким же вопросом:

enter image description here

Подробнее о Отладка Java с Eclipse .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...