មេរៀនទី២១: Java instanceof

ប្រមាណវិធី java instanceof ត្រូវបានប្រើសម្រាប់សាកល្បង object គឺជាប្រភេទពិសេស (class ឬ subclass ឬ interface)។
instanceof ក្នុង java គឺដូចជាប្រភេទ ប្រមាណវិធីប្រៀបធៀប comparison operator ព្រោះវា ជាមួយ type។
ឧទាហរណ៍ java instanceof
Let’s see the simple example of instance operator where it tests the current class.
class Simple1{
public static void main(String args[]){
Simple1 s=new Simple1();
System.out.println(s instanceof Simple);//true
}
}
Output:true
ឧទាហរណ៍ ប្រមាណវិធី java instanceof
class Animal{}
class Dog1 extends Animal{//Dog inherits Animal
public static void main(String args[]){
Dog1 d=new Dog1();
System.out.println(d instanceof Animal);//true
}
}
Output:true
instanceof ក្នុង java ជាមួយអថេរដែលមានតម្លៃ null value
ប្រសិនបើអនុវត្តប្រមាណវិធី instanceof ជាមួយអថេរ ដែលមាន តម្លៃ null value វាត្រឡប់ទៅ false។
class Dog2{
public static void main(String args[]){
Dog2 d=null;
System.out.println(d instanceof Dog2);//false
}
}
Output:false
Downcasting ជាមួយ java instanceof operator
កាលណា Subclass type យើងតាម object នៃ Parent class វាគឺជា downcasting។
Dog d=new Animal();//Compilation error
លទ្ធភាពនៃ downcasting ជាមួយ instanceof
downcasting អាចប្រើដោយប្រមាណវិធី instanceof
class Animal { }
class Dog3 extends Animal {
static void method(Animal a) {
if(a instanceof Dog3){
Dog3 d=(Dog3)a;//downcasting
System.out.println(“ok downcasting performed”);
}
}
public static void main (String [] args) {
Animal a=new Dog3();
Dog3.method(a);
}
}
Output:ok downcasting performed
Downcasting ដោយមិនប្រើ java instanceof
class Animal { }
class Dog4 extends Animal {
static void method(Animal a) {
Dog4 d=(Dog4)a;//downcasting
System.out.println(“ok downcasting performed”);
}
public static void main (String [] args) {
Animal a=new Dog4();
Dog4.method(a);
}
}
Output:ok downcasting performed
ស្វែងយល់ពីការប្រើ instanceof ពិតក្នុង java
អនុញ្ញាតអោយប្រើ instanceof keyword ដូចក្នុងឧទាហរណ៍
interface Printable{}
class A implements Printable{
public void a(){System.out.println(“a method”);}
}
class B implements Printable{
public void b(){System.out.println(“b method”);}
}
class Call{
void invoke(Printable p){//upcasting
if(p instanceof A){
A a=(A)p;//Downcasting
a.a();
}
if(p instanceof B){
B b=(B)p;//Downcasting
b.b();
}
}
}//end of Call class
class Test4{
public static void main(String args[]){
Printable p=new B();
Call c=new Call();
c.invoke(p);
}
}
Output: b method