안녕하세요 글 잘봤습니다. 제가 궁금하게 있어 질문은 남깁니다. Integer a = 10; 해서 a라는 Interger 타입의 클래스에 10라는 데이터를 담았습니다. 그리고 그 a의 주소값은 Integer b 에게 넘겨주려고 합니다. 기본적인 클래스의 방식 대로라면 Integer b = a; 이겠지만 이렇게 하면 값(10)이 넘어가 버립니다. 제가 원하는 것은 a 와 b 는 같은 주소를 공유해 a의 값에 변화가 생기면 b의 값에 변화를 주고 싶습니다. 그래서 a.hashcode(); 도 사용해봤는데 주소 값이 아닌 데이터 값이 10을 반환하더군요. a의 주소값은 얻어와 b에 그 주소값으로 설정해 줄수 있는 방법이 없을까요??
rkdgusrnrlrl님 안녕하세요.
java API를 유심히 살펴 보셨다면 java 언어가 wrapper 클래스를 님이 원하는 방식으로 사용하지 않기를 바랐다는것을 아실 수 있었을 겁니다.
java.lang.Integer 는 public final class Integer extends Number 와 같이 정의되어 있습니다. 네.. final class 죠. 한번 생성 후 변경할 수 없는 클래스로 만들어져 있습니다. 이런 이유로 setValue() 나 setInt() 같은 메소드도 존재하지 않는것이구요. final class이기 때문애 값을 변경하려면 항상 새로운 객체를 할당할 수 밖에 없습니다.
님과 같은 상황을 해결하려면 Integer를 멤버변수로 갖는 VO를 만들어 사용하시면 됩니다.
public class IntegerData implements Serializable{
private Integer i;
안녕하세요 transient 관련 글을 검색하다 방문했습니다. 좋은 글 잘 읽었습니다. 그런데 class에 final 키워드는 제가 알기로는 더 이상 상속을 불가능케 하는거지 생성된 인스턴스의 변경 불가와는 크게 상관이 없어 보이는데요 제가 잘못 알고 있는건가요? 관련 레퍼런스가 있다면 알려주시면 감사하겠습니다.
아 그럼 위의 방식으로 하게 되면 데이터 값 교환이 아닌 주소값 교환인 되는 건가요?? 이제 프로그래밍을 배우고 있고 지금 제가 자바 초급을 막 완료한 상태라 VO가 뭔지는 잘 모르겠니요^^;; 얼마전에 wrapper 클래스를 배우서 Integer라는 클래스가 int와 비슷한 기능을 해 관심을 갖고 있었거든요 c 에서는 포인트가 있어 int 변수의 주소 값을 가져올 수 있는 것 같은데 그런 점에서는 자바가 많이 아쉽네요ㅠㅠ 답변 감사합니다.