|
The Java Specialists' Newsletter
Issue 062b 2002-12-31
Category:
Language
Java version: Follow-up and Happy New Year!by Dr. Heinz M. Kabutz
First of all, I wish you all the best for the year 2003!
Two of our readers, Dimitris Andreou from Greece and another by
the name of Snow, pointed out that in JDK 1.4 the
NullPointerException has been fixed. Have a look at
Sun's
website. Try compile the following class
with the -target 1.4 option:
public class NestedBug3 {
private Integer wings = new Integer(2);
public NestedBug3() {
new ComplexBug();
}
private class ComplexBug extends Insect {
ComplexBug() {
System.out.println("Inside ComplexBug Constructor");
}
public void printDetails() {
System.out.println(wings);
}
}
public static void main(String[] arguments) {
new NestedBug3();
}
}
When you compile this with -target 1.4 you will only
be able to run it with a JVM 1.4 and later. Here is the output:
Inside Insect() Constructor
2
Inside ComplexBug Constructor
What happens in the inner class? Let's have a quick look:
jad -noinner NestedBug3$ComplexBug.class
class NestedBug3$ComplexBug extends Insect {
NestedBug3$ComplexBug(NestedBug3 nestedbug3) {
this$0 = nestedbug3;
super();
System.out.println("Inside ComplexBug Constructor");
}
public void printDetails() {
System.out.println(NestedBug3.access$000(this$0));
}
private final NestedBug3 this$0; /* synthetic field */
}
You can seen that the assignment of this$0 and the
call to super() have been swapped around.
In case you were wondering where to get hold of JAD, I wrote to the
author and he told me to tell you to look at
http://www.kpdus.com/jad.html.
I want to hereby publicly thank Pavel Kuznetsov for making this great
tool freely available. I have learnt more from this tool than from any
other Java tool.
In case you were wondering why I am spending my New Year's Party writing
a newsletter, I just want to get this done quickly so that I can put the
follow-up into the 2002 folder ;-)
Heinz
Language Articles
Related Java Course
Discuss at The Java Specialist Club
|