ПредишенСледващото

а.к.а. Функции използват оператор instanceof да тестват прилагането на интерфейс обект на езика Java. В крайна сметка, със сигурност някой дълги заглавия като повече. )

Аз открих още един интересен момент по отношение на изпълнението на оператора на instanceof в Java, което рядко се случва, когато споменах.

Всички знаем, че опитите да се използват тип instanceof оператор, които не принадлежат към една и съща наследяване йерархия, рязко потиснати от компилатора. Например, следния код:

ще доведе до грешка при компилирането:

Но се оказва, че това не винаги е така. Нека да замени класа в дясната страна на instanceof всеки интерфейс:

Странното е, че в този случай компилацията е доста успешен! И, между другото, компилирана програма се изпълнява като цяло, без никакъв проблем, и визуализира резултата "фалшива" към конзолата.

Опитай се да не бързаме с изводите, защото ако ние можем да пренапишем нашия пример, както следва:

тя отново ще доведе до грешка при компилация! Това е почти същото като в първия случай:

Странно, нали?

Всъщност, цялата работа е, че String - е последната класа, за разлика от нашия клас Клас1. Ако даден клас е обявен с финала на модификатор, компилаторът не може да се определи дали прилагането на всякакви интерфейс или не клас. Във всички останали случаи, компилаторът ще го направи неспособен да, защото интерфейсът може да реализира един от потомците на класа. Да, не е твърде убедителни извинение, по мое мнение, но, въпреки това, "това е живота, синко."

Мисля, че познаването на instanceof оператор такова поведение е полезно за програмисти, които се готвят да се подложи на Java сертифициране. Само едно и също използването на интерфейса instanceof оператор е бил обект на една от най-трудните въпроси, аз съм срещал по време на подготовката за OCPJP.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!