천발무금
936
2018-10-22 12:14:12
5
487

자바 INTEGER.ValueOf 문의


INTEGER.ValueOf에는 String만 들어갈 수 있던데 그 이유가 궁금합니다.


제네릭이 Object 객체로 선언된 콜렉션에서 값을 가져올 때 항상 String.valueof 먼저하고 integer.valueof 하는게 불편해서 궁금함이 생겼습니다.


또 위 내용을 간략히 구현할 수 있는 방법이 있을까요?

0
0
  • 답변 5

  • 해지말라고
    397
    2018-10-22 12:47:41

    https://hashcode.co.kr/questions/504/%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-parseint%EC%99%80-valueof%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%8A%94-%EB%AD%94%EA%B0%80%EC%9A%94

    0
  • LichKing
    15k
    2018-10-22 12:51:26

    String을 받아서 숫자로 형변환을 해야하니 String을 받죠.

    제네릭을 Object로 받는걸 일단 바꾸는법을 강구해보시는게 좋을것같고요. String만 들어간다면 Object가 아니라 String으로 하는게 좋겠죠.

    그게아니면 메서드하나 만들어서 쓸수있겠네요.

    Integer toIntegerAfterCastString(Object o) {}

    뭐 이런식으로


    0
  • 천발무금
    936
    2018-10-22 13:06:05

    해지말라고 

    답변 감사드립니다.

    링크 들어가서 읽어보았습니다.
    다만, 
    Integer .parseInt와 Integer.valueof 의 차이를 문의드렸다기보다는....

    정확히 궁금했던건 Integer.valueof 와 String.valueof의 차이가 궁금했던 것 같습니다.

    String.valueof는 오브젝트 객체를 변환할 수 있고 Integer.valueof는 오브젝트 객체를 변환할 수 없는데, 이 차이가 궁금했습니다.

    이 부분 때문에 본문 내용처럼 항상 String.valueof 로 오브젝트 타입을 스트링 타입으로 변환한 다음에 Integer.valueof로 Integer 타입으로 변환하는 불편함이 있어서요 ㅎㅎ



    LichKing

    답변 감사드립니다.

    제가 별도 메서드를 만들어서 편하게 쓰면됬었네요 ㅎㅎ 이 방법을 왜 생각못해봤지..ㅎㅎ

    별도로 String.valueof는 오브젝트 객체를 변환할 수 있고 Integer.valueof는 오브젝트 객체를 변환할 수 없는데, 이 차이가 왜 발생하는지 아시는지요? ㅎㅎ

    0
  • LichKing
    15k
    2018-10-22 13:14:20

    String.valueOf 의 구현을 보면 알 수 있습니다.

    해당 메서드는 단순히 넘어온 객체의 toString()을 호출할뿐입니다.

    toString은 Object에 정의되어있어서 어떤 객체든 String으로 형변환이 가능하죠.(그렇게 해서 변환한 문자열이 유효하냐 유효하지않느냐는 다른문제)

    그런데 어떤 객체든 Integer로 변환할 수 있는 메커니즘은 Object에 없습니다. 그러니 Object를 받아서 Integer로 만들수없죠.

    1
  • 천발무금
    936
    2018-10-23 14:12:27

    LichKing

    답변 감사드립니다

    Object에 toString이 정의되어있어서 그런거였군요.. 감사합니다!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.