Въведение в instanceOf в Java
instanceOf е езиков клас за програмиране на Java, който при повикване връща булева стойност и се използва за изследване на връзката между обект и клас / интерфейс. Поради способността си да сравнява тези два, той е известен и като „оператор за сравнение на тип“. Просто, instanceOf се използва за проверка дали даден обект е от всякакъв тип или не, и той връща булева стойност, която е или вярна или невярна. InstanceOf е един от полезните оператори в Java, който помага при получаване на полезна информация за обект, в среда на изпълнение.
Синтаксис:
Класът instanceOf се използва за проверка дали обектът е от някакъв клас или не.
obj instanceOf object
По-горе е стандартният синтаксис за classOf клас. Тук obj е името на обекта, който трябва да е създаден по-рано (справка). instanceOf е ключовата дума и обектът е класът или интерфейсът, с който съпоставяме obj обекта.
В различни случаи instanceOf може да се окаже от голяма полза, например, когато имаме колекция от обекти и не сте сигурни за кой обект се отнася. Пример за такъв случай може да бъде проста форма с много контроли.
Също така, ако в случай, че използваме instanceOf с променлива, която има стойност NULL, то със сигурност ще върне false.
Как instanceOf работи?
Операторът instanceOf в java работи върху проста връзка е-отношение. Просто заявявайки, is-a отношение е обектно-ориентирана концепция, при която сравняваме или казваме, работим върху връзка между абстракции, където клас A е подклас на клас B. Това е - взаимоотношение, изцяло основано на наследяване. С други думи, това е като да се каже: „X е от тип Y“.
Сега, нека разберем работата на instanceOf, заедно със съответния код.
Първо ще създадем клас на име Родител.
Код:
Class Parent(
)
Then let's add a simple main class.
public static void main(String args()) (
)
След това ще създадем екземпляр от нашия клас Parent.
Parent child = new Parent();
И накрая, ще използваме оператора instanceOf, за да проверим връзката между дете и родител. Което върви така: Child instanceOf Parent
Сега, както беше споменато по-рано, синтаксисът forOptOf преминава от обект, който трябва да провери, след това ключовата дума instanceOf и след това клас / интерфейс, с който даден обект трябва да бъде тестван.
Във всеки момент, в който в ключовата декларация се сблъскваме с ключовата дума „разширява“ или „изпълнява“, това е ясен знак за това, че се използва връзка.
Примери на instanceOf в Java
Следващият пример демонстрира използване на един ред на instanceOf.
Class instanceof_java(
public static void main(String args()) (
instanceof_java s = new instanceof_java();
System.out.println(s instanceOf instanceof_java);
)
)
Тълкуване на кода: Започва се със създаване на прост клас instanceof_java. В класа instanceof_java имаме основния си клас, а в основния ни клас създаваме обект. Този обект е тип instanceof_java. След това, за да приложим работата на instanceOf, ние предоставихме изходен оператор с object s. В последния ред преминахме s заедно с ключовата дума instanceof и родителския клас. След изпълнение кодът ще върне 'true', тъй като обектът s е от typeof тип.
Придвижвайки се по-нататък, ако имаме обект от познатия ни клас или интерфейс, но не сме присвоили никаква стойност на същия обект, той е длъжен да върне невярно, въпреки че е от същия клас.
Class instanceof_sample(
public static void main(String args()) (
instanceof_sample new = null;
System.out.println(new instanceOf instanceof_sample);
)
)
Тук имаме подобен код, какъвто имахме за по-ранен пример, но с обект с нулева стойност. Когато се изпълни, този код ще върне невярно. Както можем да видим, обект new е инстанцията instanceof_sample, но нова се назначава с нулева стойност, която се връща в false.
Правила например за Оператор
Въз основа на това дали обектът реф не е нула и е екземпляр от посочения тип. Когато X е простият клас на препратения обект, а Y е разрешеният клас или масив от тип интерфейс.
- Когато X е прост клас, тогава:
- Ако Y е тип клас, тогава X трябва да бъде подклас на Y или X трябва да е същият клас като Y.
- Ако Y е тип интерфейс, тогава клас X трябва да реализира интерфейс T.
- Когато X е интерфейс за тип, тогава:
- Ако Y е тип клас, Y трябва да бъде обект.
- Y може да бъде същият като интерфейса като X или супер интерфейса на X, ако Y е тип интерфейс.
- Ако X е клас, който представлява масив тип SC (), който е масив от компоненти на SC, тогава:
- Ако Y е тип клас, тогава Y трябва да бъде обект.
- Ако Y е тип интерфейс, тогава Y трябва да бъде от тип интерфейс, реализиран от масиви.
Накрая, ще демонстрираме програма instanceOf, за да разберем, че родителският обект не може да бъде екземпляр от дочерния клас.
програма
class Subject ( )
class Topic extends Subject ( )
class instanceof_java
(
public static void main(String() args)
(
Subject history = new Subject ();
if (history instanceof Topic)
System.out.println("history is instance of Topic");
else
System.out.println("history is NOT instance of Topic");
)
)
Тълкуване на кода: За да разберем оператора instanceOf в различни сценарии, написахме горния код. Създадохме прост клас Subject и след това друг клас Topic, който разширява клас Subject, правейки класа Topic като дете, а клас Subject като родител тук. След това още един клас с основния метод. В рамките на основния метод създадохме нов екземпляр от родителски клас Subject. В цикъла IF ELSE проверихме състоянието на обекта instance с родителския клас Subject. Ако условието е изпълнено, ще се върне „историята е екземпляр от тема“ и „историята НЕ е екземпляр от тема“, ако условието не успее.
След изпълнение на горния код, изходът ще бъде „историята НЕ е екземпляр от тема“, което означава, че условието, предадено в IF, се проваля. Това се случи, защото се опитахме да проверим родителя на обекта „история“ с клас Topic. Знаем, че класът Topic разширява класа Subject, което означава, че Topic е подклас към Subject. И когато се опитахме да проверим типа история с клас Topic, тя връща невярно (НЕ). Това означава, че родителският обект не може да бъде инстанция на клас.
изход:
Заключение - instanceOf в Java
Научихме за клас instanceOf в Java, който просто решава дали обектът е от дадения тип. Разбрахме как една връзка влияе върху оператора instanceOf. Известен също като оператор за сравнение, instanceOf се основава на наследяване.
Препоръчителни статии
Това е ръководство за InstanceOf в Java. Тук обсъждаме как работи InstanceOf в Java, правила с интерпретация на код. Може да разгледате и следните статии, за да научите повече -
- Java Ключови думи
- Анотации на Java
- Cheat Sheet JavaScript
- PHP Ключови думи