フィールドの前の Groovy @ 記号 質問する

フィールドの前の Groovy @ 記号 質問する

Groovyのフィールド名の前にある@は何を意味しますか?いくつかのクラスでは、直接アクセスできないプライベートフィールドにアクセスできます。合成クロージャ例えば:

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

ベストアンサー1

Groovy のプロパティ アクセサの使用をオーバーライドできます。次のように記述します。

println u.name

groovy は自動的に生成された getter Person.getName() を呼び出します。次のように記述すると、

println u.@name

Java の場合と同様に、フィールドに直接アクセスします。クロージャの場合、フィールドはあるようですfirstが、対応するgetFirstアクセサはありません。

Groovyのマニュアルでは、次のように説明されています。直接フィールドアクセス演算子

おすすめ記事