Groovy에 사용자 정의 유형 변환 Category을 작성하고 싶습니다. 목표는 Map
의 값을 Groovy bean의 필드에 지정하는 것입니다. 앞으로는 다양한 응답 유형이있을 것입니다. Map
의 값은 항상 String
유형이지만 다른 데이터 유형으로 변환해야합니다. 이 작업을 수행하기 위해 asType
이라는 메소드를 구현하는 Category 클래스를 만들었습니다. 나는 use
키워드를 사용하여 범주를 적용 할 때 때Mixin 주석이있는 asType 사용
class MapCategory {
static Object asType(Map self, Class clazz) {
if(clazz == Response) {
Response response = new Response()
self.each { key, value ->
response.setProperty(key, value)
}
return response
}
DefaultGroovyMethods.asType(self, clazz)
}
}
class Response {
String result
String message
}
이 잘 작동이 내 코드의 간단한 예입니다. 내가 대신 @Mixin
주석을 사용하려고하면
use(MapCategory) {
println [result: 'OK', message: 'Success'] as Response
}
그러나 제대로 작동하지 않는 것 같습니다. 올바른 응답 유형이 있지만 모든 필드는 null
입니다.
@Mixin(MapCategory)
class MyClass {
def printResponse() {
println [result: 'OK', message: 'Success'] as Response
}
}
주석을 사용하여 올바르게 작동하지 않는 이유를 아는 사람이 있습니까?
을 내가 통과에 대해 알고있는' Map'을 Groovy Bean으로 옮긴다. 예제 코드는 단순화되었다. 실제 bean은 'Integer','Boolean'과 같은 다른 데이터 타입을 가지고 있지만,'Map'은 처음에는'Strings' 만 가지고있다. 올바른 데이터 형식으로 변환합니다. –
좋아, 글쎄, 내가 위에서 말했듯이, 대신에'use'를 사용하십시오. 다른 제안으로 업데이트했습니다. – OverZealous
과제 앞에서 '이.'를 잊어 버렸습니다. 두 번째 예제는 이제 작동합니다. – OverZealous