残念ながら、私はJavaを約5年間コード化していません。次のコードがどのように、なぜ、なぜ動作しているのか、私は絶対に思い出せません。このコンストラクタコールは、次の二重ブレースとは何ですか?
私は同じような例を見つけて、これを壊しました。強調は、コメントの下にある部分に重点を置いています。コンストラクタの表記に二重括弧で囲まれたブロックが続くわけではありません。残念ながら、私はJavaのドキュメントやGoogleを使って何かを見つけることができません(私はどんな言葉をGoogleに送りますか?)。だからここ
package syntaxtest;
public class Main {
public static void main(String[] args) {
// What kind of notation is this?
MyTest tester = new MyTest() {{
setName("John Johnson");
}};
System.out.println(tester.getName());
}
}
class MyTest {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
は私の質問は以下のとおりです。
- はどのようにこの表記/構文は呼ばれているのですか?
- どこでドキュメントを読むことができますか?
誰かが最初の質問に対する答えを私に提供できる場合、私は自分自身で2番目の質問に答えることができます。
出力を確認するには:John Johnson
;)しかし、私はなぜそれが動作しているのかわかりません。
と同じです。それが何であるかを知ったら、それは明らかです。 –
私はまあまあ、このきちんとしたトリックを見ましたが、私はまたそれを使って物を壊すことは簡単だった/非常に信頼性がありませんでしたと言ってかなりの免責事項を見ました。もし私がそれを使ってみようとすれば、A)私はそれをすべての人に説明してからコードを見なければならないと思うだろうし、B)いくつかの研究をしなければならないこのパターンを使用することのすべての意味を理解する。 –
すばやく役立つ返信いただきありがとうございます。 – klekker