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

Treating instances of an interface type as a different subclass


In Chapter 7, Members Inheritance and Polymorphism, we worked with polymorphism. The next example doesn't represent a best practice because polymorphism is the way to make it work. However, we will write some code that doesn't represent a best practice just to understand a bit more about typecasting.

The following lines create a method called doSomethingWithWonderCat in JShell. We will use this method to understand how we can treat an instance received with an interface type as a different subclass. The code file for the sample is included in the java_9_oop_chapter_09_01 folder, in the example09_02.java file.

// The following code is just for educational purposes
// and it doesn't represent a best practice
// We should always take advantage of polymorphism instead
public void doSomethingWithWonderCat(WonderCat wonderCat) {
    if (wonderCat instanceof HideableWonderCat) {
        HideableWonderCat hideableCat = (HideableWonderCat...