Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Agile forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Inner Class Doubt

 
Abhi vijay
Ranch Hand
Posts: 509
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Source: Devaka Cooray's Exam Simulator




I am not able to understand why Line-4 is generating a compiler error?
 
Ruben Soto
Ranch Hand
Posts: 1032
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Abhi, when you create the anonymous class instance it can only pass the Is-A test for Serializable, so the compiler will catch that it can never be cast to C. You could do it the other way around though (I think, you can try this and see if it works)

Serializable s = (Serializable) new C(){};

In this case, the instance of the anonymous class would pass the Is-A test for C, which itself passes the Is-A test for Serializable, so the cast would both compile and run.
[ December 28, 2008: Message edited by: Ruben Soto ]
 
Punit Singh
Ranch Hand
Posts: 952
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This happends as Anonymous class has no syntax to say it extends C implements Serializable.


class C_serializable extends C implements Serializable{
}


Above case is not possible in case of anonymous class, compiler can see this, will find that in

c=(C)new Serializable(){}; //Line-4


this scenario there is no way that this innerclass could be a child of class C.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic