Book Image

Java 9 with JShell

By : Gaston C. Hillar
Book Image

Java 9 with JShell

By: Gaston C. Hillar

Overview of this book

The release of Java 9 has brought many subtle and not-so-subtle changes to the way in which Java programmers approach their code. The most important ones are definitely the availability of a REPL, known as JShell, which will make experiments and prototyping much more straightforward than the old IDE-based project-led approach. Another, more subtle change can be seen in the module system, which will lead to more modularized, maintainable code. The techniques to take full advantage of object-oriented code, functional programming and the new modularity features in Java 9 form the main subjects of this book. Each chapter will add to the full picture of Java 9 programming starting out with classes and instances and ending with generics and modularity in Java.
Table of Contents (23 chapters)
Java 9 with JShell
Credits
About the Author
Acknowledgement
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface
Index

Downcasting with interfaces and classes


The DrawableInComic interface defines one of the method requirements for the drawSpeechBalloon method with destination as an argument of the DrawableInComic type, which is the same type that the interface defines. The following is the first line in our sample code that called this method:

teddy.drawSpeechBalloon(winston, "How do you do?");

We called the method implemented in the SpiderDog class because teddy is an instance of SpiderDog. We passed a SpiderDog instance, winston, to the destination argument. The method works with the destination argument as an instance that implements the DrawableInComic interface. Hence, whenever we reference the destination variable, we will only be able to see what the DrawableInComic type defines.

We can easily understand what happens under the hood when Java downcasts a type from its original type to a target type, such as an interface to which the class conforms. In this case, SpiderDog is downcasted to DrawableInComic...