Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Why compiler allow this cast ?

 
Mahtab Alam
Ranch Hand
Posts: 391
1
Java MySQL Database PHP
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

interface X{}
class Way
{
public static void main(String args[])
{ X x=null;
Way w=(Way)x;
}
}


Way is not an X.so why compiler allows.Is it because explicit casts says to compiler don`t worry I know what i am doing .
Even it is the case why it doen`t result in runtime exception
 
Henry Wong
author
Marshal
Pie
Posts: 20998
76
C++ Chrome Eclipse IDE Firefox Browser Java jQuery Linux VI Editor Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Mahtab Alam wrote:


Way is not an X.so why compiler allows.Is it because explicit casts says to compiler don`t worry I know what i am doing .
Even it is the case why it doen`t result in runtime exception



The reason that the compilers allows it, is because, in theory, it is possible to subclass from the Way class *and* implement the X interface. This means that is is possible to have an instance that is both IS-A Way and IS-A X. And since, at compile time, the compiler can't tell if that is the case (or more correctly, nothing in the specification that allows the compiler to confirm the case), the cast is allowed.

Henry
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic