reflection - 字段前的 Groovy @ 符号

标签 reflection groovy private-members

Groovy 中的字段名称前的@ 是什么意思?对于某些类,我可以访问无法直接访问的私有(private)字段,让我们使用 ComposedClosure例如:

public class Person {
  private String name
}

def u = new Person(name:"Ron")
println u.@name //Ron
println u.name //Ron

a = {2} >> {3}
println a.@first //first closure object
println a.first //runtime error

最佳答案

它允许您覆盖 groovy 对属性访问器的使用。如果你写:

println u.name

groovy 将调用自动生成的 getter Person.getName()。如果你写:
println u.@name

它将像在 Java 中一样直接进入该字段。在关闭的情况下,似乎有一个first字段,但不是对应的 getFirst访问者。

在 groovy 手册中,它被记录为 direct field access operator .

关于reflection - 字段前的 Groovy @ 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319403/

相关文章:

java - Elasticsearch Java/Groovy API : how can I send JSON requests

c++ - 从静态方法访问类的私有(private)成员变量

c# - 使用反射以 IList<T> 形式检索 NHibernate.Collections.Generic.PersistentGenericBag

Java:通过反射调用第二类的方法

c# - 使用带有动态匿名对象的 NHibernate 在 GroupBy 查询中进行选择

c# - 有初始化的设计模式吗? C#

hibernate - 如何在 grails 脚本中建立 Hibernate session

eclipse - 如何在 Groovy 控制台(GroovyStarter)和 GGTS/Eclipse 控制台中输出和显示 Unicode

python-sphinx - Sphinx Autodoc 输出顺序

class - 在 dart 中将 final 变量设为私有(private)是多余的吗?