- 필드 값이 null 이 되면 안된다는 가정을 하자
package reflection.data;
public class Team {
private String id;
private String name;
public Team() {
}
public Team(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Team{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
package reflection.data;
public class User {
private String id;
private String name;
private Integer age;
public User() {
}
public User(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
- FieldUtil 생성
package reflection;
import java.lang.reflect.Field;
public class FieldUtil {
public static void nullFieldToDefault(Object target) throws IllegalAccessException {
Class<?> aClass = target.getClass();
Field[] declaredFields = aClass.getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
if (field.get(target) != null) {
continue;
}
if (field.getType() == String.class) {
field.set(target, "");
} else if (field.getType() == Integer.class) {
field.set(target, 0);
}
}
}
}
package reflection;
import reflection.data.Team;
import reflection.data.User;
public class FieldV4 {
public static void main(String[] args) throws IllegalAccessException {
User user = new User("id1", null, null);
Team team = new Team("team1", null);
System.out.println("===== before =====");
System.out.println("user = " + user);
System.out.println("team = " + team);
FieldUtil.nullFieldToDefault(user);
FieldUtil.nullFieldToDefault(team);
System.out.println("===== after =====");
System.out.println("user = " + user);
System.out.println("team = " + team);
}
}
'개발이 좋아서 > Java가 좋아서' 카테고리의 다른 글
애노테이션 - 애노테이션 정의 (1) | 2024.12.01 |
---|---|
리플렉션 - 생성자 탐색과 객체 생성 (0) | 2024.12.01 |
리플렉션 - 필드 탐색과 값 변경 (0) | 2024.12.01 |
리플렉션 - 메서드 탐색과 동적 호출 (0) | 2024.12.01 |
리플렉션 - 클래스와 메타데이터 (0) | 2024.12.01 |