class Apple { }
public class GenericsExample05 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Apple());
list.add(1);
list.add("1");
System.out.println(list.toString());
}
}
출력 값 :
[javaStudy07.Apple@880ec60, 1, 1]
list.toString()은 Collection.toString()에서 오버라이딩 한 것이 실행된다.
Collection.toString()에서 컬력센데 담긴 각 요소들을 String.valueOf(Object)메서드를 통해서 String으로 표현하여 리턴한다.
String.valueOf(Object)는 obj.toString()을 반환하는데
-> Returns:a string representation of the object. (getClass().getName() + '@' + Integer.toHexString(hashCode()))
String.valueOf(int i)등.. 기본형은 다 각 타입에 맞춰서 매개변수로 오버로딩이 되어있기 때문에,
알아서 String으로 변환되서 반환되지만
객체 같은 경우는 String.valueOf() 메서드에 오버로딩 되어있는게 없어서, Obj.toString()으로 넘어가서 그 객체의 hasCode가 반환된다.
즉, 사용자 정의로 만든 객체는 따로 Object 클래스의 String.toString()을 오버라이딩을 해주지 않으면,
Object 클래스의 String.toString()이 실행이 되어 hasCode가 반환된다.
'java' 카테고리의 다른 글
JDK 설치 후 환경변수 설정 (0) | 2021.11.29 |
---|---|
reflection (0) | 2021.10.31 |
제어자, 내부 클래스 (0) | 2021.10.05 |
parameter, argument (0) | 2021.08.15 |
java) 상속의 constructor (0) | 2021.02.20 |