编写一个groovy方法来提取带有注释字段的所有嵌套类
我创建对象,然后尝试将它们添加到列表中。它可以构建地图,但问题是对象图很复杂,解决方案不可维护编写一个groovy方法来提取带有注释字段的所有嵌套类,groovy,annotations,Groovy,Annotations,我创建对象,然后尝试将它们添加到列表中。它可以构建地图,但问题是对象图很复杂,解决方案不可维护 Person person=new Person(name:"Dennis Carter",department:"Engineering",manager..) Retail retail=Retail(field :"Fixed Price", p:person) list l=[] //manually add to list l<<person.manager l<&l
Person person=new Person(name:"Dennis Carter",department:"Engineering",manager..)
Retail retail=Retail(field :"Fixed Price", p:person)
list l=[]
//manually add to list
l<<person.manager
l<<manager.department
l<< manager.address
//etc
//...
Finder f=new Finder(l)
println "Manp is ${f.myMap"
class Finder {
Finder(def obj){
for(element in obj )
addToMap(element)
}
def myMap=[:]
def addToMap( obj) {
def ops=[]
def fans=[]
if(obj){
ops= obj.class.declaredFields
for(Field f : ops ){
fans= f.annotations
for(Annotation an : fans){
if(an.annotationType()==myAnnot) {
MyAnnot well=(MyAnnot)an
myMap[well.used()]=well.type()
}
}
}
}
println "Your map is finally ${myMap}"
}
}
class Retail {
@MyAnnot
String field
Person p
}
class Person{
@MyAnnot
String name
@MyAnnot
Manager currentManager
//...
}
class Manager{
@MyAnnot
String name
}
Person-Person=新人(姓名:“丹尼斯·卡特”,部门:“工程”,经理……)
零售=零售(字段:“固定价格”,p:人)
列表l=[]
//手动添加到列表中
你试过什么?您是否有任何特殊问题或要求SO为您编写代码?我已经尝试了以下方法,我尝试的解决方案如图所示,但它不可维护。我想使用更具动态性的东西,这样就可以添加新对象而无需手动添加到列表中MyAnnot.used()
应该返回什么?@MyAnnot{String used()default',String type()default'}