inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

Long -> int 타입 변환 질문

해결된 질문

177

matics3982

작성한 질문수 1

0

@Test
public void findAll() {
    //given
    Member member1 = new Member();
    member1.setName("hi");
    Member member2 = new Member();
    member2.setName("hello");

    //when
    repository.save(member1);
    repository.save(member2);
    List<Member> memberList = repository.findAll();

    //then
    assertThat(memberList.size()).isEqualTo(2);
    assertThat(memberList.get((int) member1.getId())).isEqualTo(member1);
    assertThat(memberList.get((int) (member1.getId() - 0))).isEqualTo(member1);
}

밑에서 두 번째줄 (int) member1.getId()는 컴파일 오류가 발생하는데

맨 밑줄의 (int) (member1.getId() - 0)은 컴파일 오류가 발생하지 않는 이유가 궁금합니다.

java

답변 1

1

OMG

안녕하세요. matics3982님, 공식 서포터즈 OMG입니다.

 

오류가 발생하지 않은 케이스에 대해서 먼저 설명드리면,

member1.getId() - 0

의 연산결과의 타입은 Long타입의 래퍼클래스가 아닌 long타입이 되고 이 때 int로의 묵시적 형변환이 가능하고 컴파일 오류가 발생하지 않습니다.

imageimageimage

반면,

(int) member1.getId()

의 경우 Long타입의 래퍼 클래스를 int의 프리미티브 타입으로 변환하려고 하기에 실패합니다. 만약 int로 변환하려면 다음과 같이 intValue()를 사용해야합니다.

image

감사합니다.

..

0

78

2

Unused property.....

0

102

2

project JDK is misconfigured

0

133

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

83

2

단위/통합 테스트 버전충돌 문제

0

91

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

231

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

104

2

윈도우 build test오류 질문

1

103

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

101

2

테스트 실행 시 에러 질문

0

292

1

name을 통한 비교와 객체를 통한 비교

0

77

1

빌드 후 libs 없음

1

130

1

윈도우 gradlew.bat 에러

0

168

1

@PostMapping("/members/new")가 동작하지 않습니다

0

90

1

java static class와 kotlin class

0

79

1

스프링 DB연결

0

127

1

소요 시간

0

87

2

ddl.sql에 빨간 밑줄

1

102

2

welcome page 에러

0

183

3

잘 모르겠습니다.

0

164

2

fail을 똑같이 쳤는데 오류가 발생해요

0

158

2

index.html Welcome page

0

125

1

프로젝트 gradle-groovy ?

0

372

1

테스트코드 메서드명 한글

0

204

2