如何通过注释使Groovy脚本中的私有字段可用

时间:2015-12-09 10:50:13

标签: java groovy annotations

例如,我有一个班级:

public class Model1 {
  @Bind private int val;
}

我有一个注释

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)

public @interface Bind {


}

我想将Model1类的对象传递给Groovy脚本,但我不会在该脚本中使用val。我可以通过@Bind注释来实现它吗?

1 个答案:

答案 0 :(得分:0)

如果您的私人领域没有访问者,那么实现目标的唯一方法就是使用反射。

首先,获取模型的所有字段:

Model1.getClass().getDeclaredFields()

它将返回已声明字段的列表。 然后,迭代列表并检查字段是否使用Bind注释:

field.getDeclaredAnnotation(Bind.class)

如果字段未使用' Bind'进行注释,则此方法将返回null。注释

最后,让私人字段可访问:

field.setAccessible(true);

现在用字段

做你需要的watever