getField vs getDeclaredField
상속관련해서 getDeclaredField 은 상속된 프로퍼티를 불러올 수 없다.
반면 getField 는 public 으로 상속된 프로퍼티만 불러들일 수 있다.
- (Field[]) getFields() : 클래스에 선언된 필드들 반환(public 접근지시자만)
- (Field) getField(String name) : name에 해당하는 필드를 반환 (없으면 NoSuchFieldException)
- (Field[]) getDeclaredFields() : 클래스에 선언된 모든 필드들 반환(private 까지도 포함)
- (Field) getDeclaredField(String name) : name에 해당하는 필드를 반환(없으면 NoSuchFieldException)
https://sas-study.tistory.com/275
[Java] 리플렉션 API : 클래스, 필드, 메서드 정보 조회
리플렉션은 Class 타입으로 시작합니다. 도큐먼트 : https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html Class (Java Platform SE 8 ) Determines if the specified Class object represents a primitive type. There are nine predefined Cl
sas-study.tistory.com
goodsMapList.forEach { (key, goodsInfo: GoodsDto) ->
sinnaraStockinMapList[key]?.let { item ->
item.setGoodsInfo(goodsInfo)
goodsInfo::class.java.declaredFields.forEach { field ->
field.isAccessible = true
try {
if (propertySet.contains(field.name)) {
item::class.java.getDeclaredField(field.name).let {
it.isAccessible = true
it.set(item, field.get(goodsInfo))
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
goodsInfo.validPrdDdNum?.let { validPrdDdNum ->
dto.dstrTlmtYmd = DateUtils.addDate(validPrdDdNum.toLong(), DateUtils.getCurrentDate())
}
resultList.add(dto)
}
}
'Java' 카테고리의 다른 글
JPA QueryDSL - 쿼리 함수 정리 (1) | 2024.02.12 |
---|---|
RxJava - Flux 함수 (0) | 2023.08.27 |
Java - 람다 스트림 예제 (0) | 2023.02.10 |
Java - Thread 동시성 문제3 (Synchroized) (0) | 2022.05.04 |
Java - Thread 동시성 문제2 (ThreadLocal ) (0) | 2022.05.04 |
댓글