본문 바로가기
Java

JAVA - 리플렉션 getField, getDeclaredField 차이

by sinabeuro 2023. 5. 20.
728x90

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)
            }
        }

 

 

 

 

 

728x90

'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

댓글