Java syntax sugar
•
Java
I came across this code block today. I don't know how it works I know how to do anonymous classes, but I'm used to seeing a method signature, not just a pair of braces Is the code between these braces placed in static blocks? Does it enter the constructor? Or something else?
conext.checking(new Expectations() {
{ // <- what does this pair of braces do?
oneOf(alarm).getAttackAlarm(null);
}
});
Solution
It is an instance initializer that invokes code through the context of the created object
This is equivalent to
Expectations exp = new Expectations(); exp.oneOf(alarm).getAttackAlarm(null); conext.checking(exp)
Whoever writes may think that he does not declare a variable (not true), or that it is cleaner code (I disagree) is more efficient
The main purpose of these initializers is to instantiate mappings, namely:
Map map = new HashMap() {{
put("key1","value1");
put("key2","value2");
}};
I think it's actually a little more readable
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
