Meaningless Drivel is fun!*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Question in K&B Chapter 8 Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Question in K&B Chapter 8" Watch "Question in K&B Chapter 8" New topic
Author

Question in K&B Chapter 8

Joss Armstrong
Greenhorn

Joined: Jul 29, 2004
Posts: 17
On page 662 of SCJP book there is a question
1. public class TestObj {
2. public static void main(String[] args) {
3. Object o = new Object() {
4. public boolean equals(Object obj) {
5. return true;
6. }
7. }
8. System.out.println(o.equals("Fred"));
9. }
10. }

And the answers are
...
E. Compilation fails because of an error on line 4.
F. Compilation fails because of an error on line 8.
G. Compilation fails because of an error on a line other than 3, 4, or 8.

The correct answer given is G on the basis that compilation fails due to a missing ; on line 7 but I would have thought that this would be picked up by the compiler as a missing ; on line 8?
Equally you could say it was an error on line 3 because the assignment started on line 3 was not closed correctly.
Is there a standard way of knowing how to place errors on questions like this on the exam?


SCJP 6, OCPWCD JEE5, OCEWSD JEE6, OCMJEA
Faisal Ahmad
Ranch Hand

Joined: Aug 31, 2006
Posts: 346

If you notice line 3, you can see that an anonymous inner class is being declared that extends class Object. Line 7 is the end of that inner class. Line 8 doesn't belongs to the inner class discussed above. The assignment started at line 3 is not closed correctly on line 7. So, the compiler shows the error at line 7.
Joss Armstrong
Greenhorn

Joined: Jul 29, 2004
Posts: 17
But when you try to compile this code you get the error:

TestObj.java:8 ';' expected
System.out.println(o.equals("Fred"));
^
1 error


So line 8 is the logical answer to this question
ahmed yehia
Ranch Hand

Joined: Apr 22, 2006
Posts: 424
This is the way the compiler tells about missing semicolons, So the semicolon is expected at the beginning of the next line following the statement that miss the semicolon.
[ September 18, 2007: Message edited by: Ahmed Yehia ]
 
jQuery in Action, 2nd edition
 
subject: Question in K&B Chapter 8
 
Similar Threads
Updated K&B 5 Errata - 4/16
A question on K&B question, expecting reply from Bert Bates himself...
Clarification for 1 question from K and B book - Chapter 8 - Inner classes.
K&B SCJP 5: Chapter 8, Self Test 9, wrong answer?
Inner Classes