Java 如何在Groovy脚本中通过注释为字段添加getter来授予对字段的访问权限

Java 如何在Groovy脚本中通过注释为字段添加getter来授予对字段的访问权限,java,reflection,groovy,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;

我有一个模型类,里面有字段:

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脚本中可用?

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

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

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

2。没有接受者和接受者: 在groovy/grails中,除非您为了某种特定的目的重写它们,否则范围变量不会有太大的区别。因此,您可以使用
model.LL=10直接设置该值

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

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

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

您想通过注释处理(构建时;请参阅)自动创建getter setter还是在运行时自动创建getter和setter?@mlk我试图通过反射修改这些字段,如(简化示例):
modelClass.getDeclaredField(“LL”).set(model,10)但我得到
java.lang.IllegalAccessException:类zad1.Controller无法访问修改器为“private”的类zad1.models.Model1的成员
老师原谅了修改
Model1
类,因此我寻找一种方法来定义类外字段的getter。我检查了第四种方法,它已经在
field field=model.getDeclaredField(“LL”)
->
类控制器无法使用修饰符访问zad1.models.Model1类的成员“私人“
当您尝试设置值时,而不是当您尝试获取字段时,会引发此异常。在将其标记为可访问后,将不会出现此异常。我自己已经验证过了。我知道这是应该发生的事情,在一些教程中也有展示。由于某种原因,我在我告诉你的地方遇到了异常。在我重新打开所有文件后,异常停止抛出。当然,我以前保存过所有文件。一定是Eclipse bug。