March 2017
Beginner to intermediate
114 pages
2h 16m
English
The first example is a simple anonymous class instance passed into our waitFor method.
public class Example1 {
// anonymous class
void example() throws InterruptedException {
waitFor(new Condition() {
@Override
public Boolean isSatisfied() {
return true;
}
});
}
}If we look at the bytecode below, the thing to notice is that an instance of the anonymous class is newed up at line 6. The #2 refers to a lookup, the result of which is shown in the comment. So it uses the new opcode with whatever is at #2 in the constant pool, this happens to be the anonymous class Example$1.
void example() throws java.lang.InterruptedException; descriptor: ()V flags: Code: stack=3, locals=1, args_size=1 0: new #2 // class Example1$1 3: dup 4: aload_0 5: invokespecial ...
Read now
Unlock full access