Search code examples
javainheritancedowncastupcasting

implicit upcasting and explicit downcasting in java


When java can implicitly do up casting , why does not it implicitly do down casting ?Please explain with some simple example?


Solution

  • The point is that upcasting will always succeed, so it's safe - whereas downcasting can fail:

    String x = getStringFromSomewhere();
    Object y = x; // This will *always* work
    

    But:

    Object x = getObjectFromSomewhere();
    String y = (String) x; // This might fail with an exception
    

    Because it's a "dangerous" operation, the language forces you to do it explicitly - you're basically saying to the compiler "I know more than you do at this point!"