Generic(제너릭)
- Class에서 사용할 type을 class 작성 시 지정하는 것이 아니라 사용시점에 지정하는 것
- 구문 : Class 선언 public class ClassName <E> { public void go(E e) { } }
ex) ClassName c1 = new ClassName <String > ();
ClassName c2 = new ClassName <Human > ();
※ Generic 파라미터는 static 메소드에서는 사용할 수 없다.
Object - Java.lang.Object : 모든 class의 최상위 → 모든 객체의 type이 될 수 있다. - 메소드 * public String toString() : 객체(object)의 string으로 반환 * public boolean equals(Object obj) : 매개변수로 받은 객체가 같은 객체인지 비교 ex) obj1.equals(obj2) → obj1 == obj2 Overriding : 두 객체의 attribute의 값이 같다면 true 리턴 → equals() 메소드를 overriding할 때 반드시 hashCode() 메소드도 같이 overriding 한다. Because, Set에서 대입하려는 객체와 이미 들어있는 객체를 비교할 때 equals() 메소드와 hashCode() 메소드가 모두 참 일 때만 같은 객체라고 판단하기 때문에 equals()와 hashCode() 메소드 모두 overriding이 필요하다. ※ 원래는 obj1과 obj2 객체가 같은지를 비교하여 값을 true 혹은 false의 값을 반환 하는 것이지만 대부분이 ((ex)obj1=“abc”, obj2=“abc”)와 같이 객체들이 가지고 있는 문자열을 비교하는 것으로 인식하여 이것을 Overriding을 통해서 각기 객체가 다르더라도 가지고 있는 문자열의 값이 같은지 비교를 하여 true 혹은 false를 리턴한다. Java.lang.Class - Class의 정보를 처리하는 객체 - Object : getClass() → Class 객체의 정보를 리턴 Class c = obj.getClass(); - Class이름.class → Class 객체 Class c = ProductDTO.class; - Class.forName(“Class의 fullyName”) → 주로 JDBC에서 쓰임 Class c = Class.forName(“dto.ProductDTO”); → import를 하더라도 문자열이기 때문에 풀네임을 써야함 Wrapper class - 자바의 primitive type을 객체화 시킨 것(byte, short, int, long, float, double, char, boolean) - boxing : primitive → wrapper 객체 생성자의 argument로 넣어 객체 생성 ex) new Integer(10); new Integer(“10”); ∴ Auto boxing Jdk 1.4 버전 → int I = 10; Integer in = new Integer(i); Jdk 1.5 버전 → Integer in = i; Long l = 10l;(auto boxing) - Unboxing : Wrapper 객체 → primitive wrapper객체.XXXValue(); → XXX는 primitive type ex) int i = in.intValue(); long l = en.longValue(); ∴ Auto unboxing Integer in = new Integer(10); int i = in.intValue(); int i = in;
'Wanna be a Programmer > Java Programming' 카테고리의 다른 글
Nested class (0) | 2012.07.17 |
---|---|
Java Programming - String, StringBuffer, StringBuilder, DTO (0) | 2012.07.10 |
Java Programming - Map, Iterator (0) | 2012.07.09 |
Java Programming - Collection API, 배열 vs 컬렉션 (0) | 2012.07.04 |
Java Programming - Abstract vs Interface (0) | 2012.07.03 |