반응형
[Java] Object 타입에 상관없이 VO 데이터 가져오기
1. 전혀 다른 두 개의 VO
- 참고로 @Data는 Lombok 라이브러리를 사용하기 때문에 쓴 것이니, Lombok이 따로 설치되지 않은 경우에는 getter, setter, toString 메서드를 오버라이딩하길 바란다.
@Data
public class Grade {
private String subject;
private String name;
private int grade;
}
@Data
public class Favorite {
private String color;
private String animal;
private int number;
}
- 예시) 두 VO의 데이터는 다음과 같다
Grade grade = new Grade();
grade.setSubject("수학");
grade.setName("haenny");
grade.setGrade(95);
Favorite fav = new Favorite();
fav.setColor("blue");
fav.setAnimal("lion");
fav.setNumber(3);
2. getVOvalue 메서드의 유동적인 파라메터 ?
- 파라메터 타입 Grade 인 경우
public void getVOvalue(Grade vo) {
System.out.println("subject : " + vo.getSubject());
System.out.println("name : " + vo.getName());
System.out.println("grade : " + vo.getGrade());
}
// output
// subject : 수학
// name : haenny
// grade : 95
- 파라메터 타입 Favorite 인 경우
public void getVOvalue(Favorite vo) {
System.out.println("color : " + vo.getColor());
System.out.println("animal : " + vo.getAnimal());
System.out.println("number : " + vo.getNumber());
}
// output
// color : blue
// animal : lion
// number : 3
getVOvalue는 파라메터로 넘어온 VO 객체의 컬럼명과 값을 출력하는 메서드이다.
같은 기능을 하는 메서드인데, 어떤 파라메터가 넘어오냐에 따라 위 처럼 코드를 구현해야하는가?
으음~
해결. Object 타입에 상관없이 VO 데이터를 가져오자
- 어떤 Object를 넘겨도 해당 컬럼명과 컬럼값을 출력해준다.
public void getVOvalue(Object vo) {
for(Field field : vo.getClass().getDeclaredFields()){
field.setAccessible(true);
Object value = field.get(vo);
System.out.println(field.getName()+" : "+value);
}
}
728x90
반응형
'JVM > Java' 카테고리의 다른 글
[Java] SimpleCaptcha를 이용한 이미지 보안문자 생성하기 (7) | 2020.01.23 |
---|---|
[Java] POI 라이브러리 사용 : 엑셀 다운로드 로직 구현하기 (27) | 2020.01.17 |
[Java] 특정문자로 문자열 나누기 split 사용방법과 주의점 (0) | 2020.01.03 |
[Java] StartsWith/EndWith : 문자열의 시작/끝 부분과 특정 문자열이 일치하는지 확인하기 (0) | 2019.12.30 |
[Error] (Java 버전 중복) could not open `C:\java\lib\amd64\jvm.cfg' 에러 레즈스트리 수정하여 해결하기 (0) | 2019.11.05 |
댓글