Java Syntax - what does it do?
java, syntax
Solution
By first paranthesis, you are creating an annonymous inner, sub class of super class ArrayList. The second parenthesis is for instance initialization for the instances of your annonymous inner class. Have a look on this Doc for more details. There is a good explanation in this blog about instance initialization blocks
Problem
While looking through the code I got from another developer, I came across the following piece of code. ``` public void myMethod() { final MyClass data1 = new MyClass(1,2,3); final MyClass data2 = new MyClass(4,5,6); // [...] final MyClass dataN = new MyClass(M,O,P); ArrayList<MyClass> list = new ArrayList<MyClass>() { { add(data1); add(data2); // [...] add(dataN); } }; } ``` In fact, I guess I know what this code does (populating `list` with the defined data), but yet I'm astonished how the result is achieved. Especially I'm wondering what the curly braces `{}` mean in that case. I know (think?) that this code is horrible and I've rewritten it, but just for the sake of curiosity I'm wondering what it exactly does. My guess is the following: - First pair of `{}` is an anonymous object creation - which is cast to `ArrayList<MyClass>`. - Second pair of `{}` is - I'm thinking of - something similiar to a static initializtion but for an object. Could that be some kind of anonymous constructor? Can someone please give me some insight here? (Where may I find such "syntax-magic" in the java docs?)