TIL-25.12.09

이준연·2025년 12월 9일

학습 키워드

  • 트러블슈팅

트러블 슈팅


클래스와 매서드를 제네릭을 사용하여 리펙토링 했는데, 정수형 이외의 값이 입력되지 않아 작성된 코드를 다시 살펴보았습니다. 들어올 수 있는 값의 타입은 제네릭으로 선언하였지만, 입력될 수 있는 값은 정수형으로만 제한이 되어있었기에 코드에 오류가 발생했던 것이었습니다. 효율성을 위해 hasNext를 사용하여 입력한 값에 따라 형을 정하도록 코드를 수정하려고 하였고, if문을 사용하면 스캔 값들이 지역변수가 되기에 매서드로 기능을 분리하였습니다.


입력 값과 비교하여 큰 값을 어떻게 가져올 수 있을지 구조를 생각하며 간단히 코드를 작성하였습니다. 위의 코드의 문제점은 크게 2가지 존재합니다. 첫 번째는 변수 list를 Object[] 타입으로 선언한 것입니다. calc.getItem() 메서드는 Number 타입의 List 객체를 불러오는데 이를 굳이 Object[] 타입으로 선언하여 Number 타입 정보가 손실되었습니다. 변수 c는 Number타입이기 때문에 연산자를 사용할 수 없습니다. doubleValue 메서드를 사용하여 타입을 변경하여야 합니다.


형 변환을 하지 않고 바로 스트림을 사용하여 코드를 진행하였습니다.

profile
반갑습니다!

0개의 댓글