如何通过注释为字段添加getter,从而将Groovy脚本内部的访问权限提供给字段

时间:2015-12-04 10:46:15

标签: java reflection groovy

我有一个包含字段的模型类:

public class Model1 {
  @Bind private int LL; 
  @Bind private  double[] twKI; 
  @Bind private  double[] twKS; 
  @Bind private  double[] twINW; 
  @Bind private  double[] twEKS; 
}

我创建了一个注释:

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类中的字段定义getter和setter而不进行修改,以便以后可以在groovy脚本中使用它们?

1 个答案:

答案 0 :(得分:2)

您有多种选择,您可以选择更适合您的选择:

我们有一个模型对象:Model model = new Model()

<强> 1。使用getter和setter :     创建getter和setter方法,然后调用setter方法:model.setLL(10)

<强> 2。没有getter和setter :     在groovy / grails范围变量中,除非出于某些特定目的而覆盖它们,否则没有太大区别。因此,您可以使用model.LL = 10

直接设置值

第3。使用setProperty model.setProperty('LL', 10)

<强> 4。反射方式:在设置字段值之前,将其标记为可访问。

Field field = Model.getDeclaredField("LL")
field.setAccessible(true)
field.set(model, 10)