-
20221104 TIL 메서드 시그니처를 고려하자!TIL 2022. 11. 4. 13:53
최근에 컬렉션 프레임워크들의 메서드들을 많이 살펴봤었는데,
오늘 코딩 문제를 풀다가 불현듯 이게 내가 예상한대로 되나? 싶은 생각이 들었던 메서드가 있었다.
그것은 바로바로 List의 remove메서드이다.
List는 remove로 어떤 인덱스에 해당하는 값을 없앨 수도 있고,
혹은 일치하는 값을 없앨 수도 있다.
그런데 이번 코딩 문제는 List에 Integer값들이 들어있었기 때문에
내가 인덱스 1에 해당하는 값을 지우고 싶어서 list.remove(1)을 했을 때 만약 값이 1인 요소를 지우면 어떡하지라는 생각이 불현듯 들었다.
이 불안함은 메서드 시그니처로 해결할 수 있었다.자바는 메서드 시그니처로 각 메서드를 구분한다.
그리고 자바의 메서드 시그니처는 메서드 이름과 파라미터 타입들로 구성된다.List의 remove메서드의 시그니처를 살펴보면,
인덱스를 기준으로 없앨 때는 파라미터 타입이 int이고,
일치하는 값을 기준으로 없앨 때는 파라미터 타입이 Object인 것을 알 수 있다.
따라서 Integer타입이 아닌 그냥 숫자를 넣으면 인덱스를 기준으로 삭제를 하게 되고,
Wrapper Class를 이용해서 Integer.valueOf(숫자), new Integer(숫자) 값을 인자로 넣게되면 일치하는 첫 값을 삭제하게 된다.
메서드를 살펴볼 때 메서드 시그니처도 잘 살펴보도록 하자!
그리고 또 한 가지 유의할 점은 메서드 시그니처에는 메서드 이름과 파라미터 타입들만 포함된다는 점이다.
그래서 만약 내가 메서드들을 구현할 때 메서드 오버로딩을 하려면 파라미터 타입들이 바뀌어야 한다.
반환타입이나 파라미터 이름은 메서드 시그니처에 포함되지 않기 때문에
반환타입이나 파라미터 이름, 접근 제어자등 만 바꾼 또 다른 메서드를 정의하면 method is already defined in class 에러가 발생한다.
메서드 시그니처는 메서드 이름과 파라미터 타입들로 구성되고, 메서드 시그니처로 각 메서드가 구분된다는 사실을 꼭 인지하자!'TIL' 카테고리의 다른 글
20221106 TIL JWT를 쓸 때 주의할 점 (0) 2022.11.06 20221105 TIL 모르는 기술을 어떻게 쓸 것인가 (0) 2022.11.05 20221103 TIL 비트코인과 암호화 (1) 2022.11.03 20221102 TIL 해시 충돌을 어떻게 해결할 것인가 (1) 2022.11.02 20221101 TIL 코테에 대비하자 2 (0) 2022.11.01