저장소 변환전
class Main {
public static void main(String[] args) {
Int저장소 a저장소1 = new Int저장소();
a저장소1.setData(30);
int a = a저장소1.getData();
System.out.println(a);
Double저장소 a저장소2 = new Double저장소();
a저장소2.setData(5.5);
double b = a저장소2.getData();
System.out.println(b);
사과저장소 a저장소3 = new 사과저장소();
a저장소3.setData(new 사과());
사과 c = a저장소3.getData();
System.out.println(c);
}
}
class 사과 {
}
class Int저장소 {
Object data;
int getData() {
return (int)data;
}
void setData(Object inputedData) {
this.data = inputedData;
}
}
class Double저장소 {
Object data;
double getData() {
return (double)data;
}
void setData(Object inputedData) {
this.data = inputedData;
}
}
class 사과저장소 {
Object data;
사과 getData() {
return (사과)data;
}
void setData(Object inputedData) {
this.data = inputedData;
}
}
v1 변환 후 ( feat.Object저장소 )
저장소를 하나로 통일 가능해 효율적
코드 양 줄어듬
명시적 표현
을 통해 사용하고자하는 main 문에서 적용
class Main {
public static void main(String[] args) {
Object저장소 a저장소1 = new Object저장소();
a저장소1.setData(30);
int a = (int)a저장소1.getData();
System.out.println(a);
Object저장소 a저장소2 = new Object저장소();
a저장소2.setData(5.5);
double b = (double)a저장소2.getData();
System.out.println(b);
Object저장소 a저장소3 = new Object저장소();
a저장소3.setData(new 사과());
사과 c = (사과)a저장소3.getData();
System.out.println(c);
}
}
class 사과 {
}
class Object저장소 {
Object data;
Object getData() {
return data;
}
void setData(Object inputedData) {
this.data = inputedData;
}
}
v2 변환 후 ( feat.제너릭 ) [ T : type]
제너릭
: (명시적)형변환 > 귀찮.. > T
(암묵적 변수) 표현
규칙
: 대부분 대문자
로 표기
한다.
로직이 비슷
할 때 사용.
템플릿
같은 것
class 제너릭저장소<T> {
T data;
T getData() {
return (T)data;
}
void setData(T inputedData) {
this.data = inputedData;
}
}
class Main {
public static void main(String[] args) {
제너릭저장소<Integer> a저장소1 = new 제너릭저장소<>();
a저장소1.setData(30);
int a = a저장소1.getData();
System.out.println(a);
제너릭저장소<Double> a저장소2 = new 제너릭저장소<>();
a저장소2.setData(5.5);
double b = a저장소2.getData();
System.out.println(b);
제너릭저장소<사과> a저장소3 = new 제너릭저장소<>();
a저장소3.setData(new 사과());
사과 c = a저장소3.getData();
System.out.println(c);
}
}
class 사과 {
}