logo

toto klíčové slovo v Javě

Využití může být hodně Java toto klíčové slovo . V Javě je to a referenční proměnná který odkazuje na aktuální objekt.

java toto klíčové slovo

Toto klíčové slovo používá Java

Zde je uvedeno 6 použití tohoto klíčového slova Java.

  1. to lze použít k odkazování na aktuální proměnnou instance třídy.
  2. toto lze použít k vyvolání aktuální metody třídy (implicitně)
  3. this() lze použít k vyvolání konstruktoru aktuální třídy.
  4. to lze předat jako argument při volání metody.
  5. to lze předat jako argument ve volání konstruktoru.
  6. to lze použít k vrácení aktuální instance třídy z metody.

Návrh: Pokud jste začátečník v Javě, vyhledejte pouze tři použití tohoto klíčového slova.

Toto klíčové slovo používá Java

1) toto: odkazovat na aktuální proměnnou instance třídy

Klíčové slovo this lze použít k odkazování na aktuální proměnnou instance třídy. Pokud existuje nejednoznačnost mezi proměnnými instance a parametry, toto klíčové slovo řeší problém nejednoznačnosti.

Pochopení problému bez tohoto klíčového slova

Pokud toto klíčové slovo nepoužijeme, pochopíme problém podle níže uvedeného příkladu:

výměna paměti
 class Student{ int rollno; String name; float fee; Student(int rollno,String name,float fee){ rollno=rollno; name=name; fee=fee; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis1{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }} 
Otestujte to hned

Výstup:

 0 null 0.0 0 null 0.0 

Ve výše uvedeném příkladu jsou parametry (formální argumenty) a proměnné instance stejné. Toto klíčové slovo tedy používáme k rozlišení lokální proměnné a proměnné instance.

Řešení výše uvedeného problému pomocí tohoto klíčového slova

 class Student{ int rollno; String name; float fee; Student(int rollno,String name,float fee){ this.rollno=rollno; this.name=name; this.fee=fee; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis2{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }} 
Otestujte to hned

Výstup:

 111 ankit 5000.0 112 sumit 6000.0 

Pokud se lokální proměnné (formální argumenty) a proměnné instance liší, není nutné používat toto klíčové slovo jako v následujícím programu:

Program, kde toto klíčové slovo není vyžadováno

 class Student{ int rollno; String name; float fee; Student(int r,String n,float f){ rollno=r; name=n; fee=f; } void display(){System.out.println(rollno+' '+name+' '+fee);} } class TestThis3{ public static void main(String args[]){ Student s1=new Student(111,'ankit',5000f); Student s2=new Student(112,'sumit',6000f); s1.display(); s2.display(); }} 
Otestujte to hned

Výstup:

 111 ankit 5000.0 112 sumit 6000.0 

Je lepší používat pro proměnné smysluplné názvy. Používáme tedy stejný název například pro proměnné a parametry v reálném čase a vždy používáme toto klíčové slovo.


2) toto: k vyvolání metody aktuální třídy

Metodu aktuální třídy můžete vyvolat pomocí klíčového slova this. Pokud nepoužijete klíčové slovo this, kompilátor toto klíčové slovo automaticky přidá při vyvolání metody. Podívejme se na příklad

semena vs spory
 class A{ void m(){System.out.println('hello m');} void n(){ System.out.println('hello n'); //m();//same as this.m() this.m(); } } class TestThis4{ public static void main(String args[]){ A a=new A(); a.n(); }} 
Otestujte to hned

Výstup:

 hello n hello m 

3) this() : pro vyvolání konstruktoru aktuální třídy

Volání konstruktoru this() lze použít k vyvolání konstruktoru aktuální třídy. Používá se k opětovnému použití konstruktoru. Jinými slovy, používá se pro řetězení konstruktorů.

Volání výchozího konstruktoru z parametrizovaného konstruktoru:

 class A{ A(){System.out.println('hello a');} A(int x){ this(); System.out.println(x); } } class TestThis5{ public static void main(String args[]){ A a=new A(10); }} 
Otestujte to hned

Výstup:

 hello a 10 

Volání parametrizovaného konstruktoru z výchozího konstruktoru:

 class A{ A(){ this(5); System.out.println('hello a'); } A(int x){ System.out.println(x); } } class TestThis6{ public static void main(String args[]){ A a=new A(); }} 
Otestujte to hned

Výstup:

 5 hello a 

Skutečné použití volání konstruktoru this().

Volání konstruktoru this() by se mělo použít k opětovnému použití konstruktoru z konstruktoru. Udržuje řetěz mezi konstruktory, tj. používá se pro řetězení konstruktorů. Podívejme se na příklad uvedený níže, který ukazuje skutečné použití tohoto klíčového slova.

 class Student{ int rollno; String name,course; float fee; Student(int rollno,String name,String course){ this.rollno=rollno; this.name=name; this.course=course; } Student(int rollno,String name,String course,float fee){ this(rollno,name,course);//reusing constructor this.fee=fee; } void display(){System.out.println(rollno+' '+name+' '+course+' '+fee);} } class TestThis7{ public static void main(String args[]){ Student s1=new Student(111,'ankit','java'); Student s2=new Student(112,'sumit','java',6000f); s1.display(); s2.display(); }} 
Otestujte to hned

Výstup:

 111 ankit java 0.0 112 sumit java 6000.0 

Pravidlo: Volání this() musí být prvním příkazem v konstruktoru.

 class Student{ int rollno; String name,course; float fee; Student(int rollno,String name,String course){ this.rollno=rollno; this.name=name; this.course=course; } Student(int rollno,String name,String course,float fee){ this.fee=fee; this(rollno,name,course);//C.T.Error } void display(){System.out.println(rollno+' '+name+' '+course+' '+fee);} } class TestThis8{ public static void main(String args[]){ Student s1=new Student(111,'ankit','java'); Student s2=new Student(112,'sumit','java',6000f); s1.display(); s2.display(); }} 
Otestujte to hned

Výstup:

jak převést z řetězce na int
 Compile Time Error: Call to this must be first statement in constructor 

4) toto: předat jako argument v metodě

Klíčové slovo this lze také předat jako argument v metodě. Používá se především při zpracování událostí. Podívejme se na příklad:

 class S2{ void m(S2 obj){ System.out.println('method is invoked'); } void p(){ m(this); } public static void main(String args[]){ S2 s1 = new S2(); s1.p(); } } 
Otestujte to hned

Výstup:

 method is invoked 

Aplikace toho, co lze předat jako argument:

Při zpracování událostí (nebo) v situaci, kdy musíme poskytnout odkaz na třídu na jinou. Používá se k opětovnému použití jednoho objektu v mnoha metodách.


5) toto: předat jako argument ve volání konstruktoru

Klíčové slovo this můžeme předat také v konstruktoru. Je to užitečné, pokud musíme použít jeden objekt ve více třídách. Podívejme se na příklad:

xml komentář
 class B{ A4 obj; B(A4 obj){ this.obj=obj; } void display(){ System.out.println(obj.data);//using data member of A4 class } } class A4{ int data=10; A4(){ B b=new B(this); b.display(); } public static void main(String args[]){ A4 a=new A4(); } } 
Otestujte to hned
 Output:10 

6) toto klíčové slovo lze použít k vrácení aktuální instance třídy

Toto klíčové slovo můžeme vrátit jako příkaz z metody. V takovém případě musí být návratovým typem metody typ třídy (neprimitivní). Podívejme se na příklad:

Syntaxe tohoto, kterou lze vrátit jako příkaz

 return_type method_name(){ return this; } 

Příklad tohoto klíčového slova, které vrátíte jako příkaz z metody

 class A{ A getA(){ return this; } void msg(){System.out.println('Hello java');} } class Test1{ public static void main(String args[]){ new A().getA().msg(); } } 
Otestujte to hned

Výstup:

 Hello java 

Prokázání tohoto klíčového slova

Dokažme, že toto klíčové slovo odkazuje na aktuální proměnnou instance třídy. V tomto programu tiskneme referenční proměnnou a to, výstup obou proměnných je stejný.

 class A5{ void m(){ System.out.println(this);//prints same reference ID } public static void main(String args[]){ A5 obj=new A5(); System.out.println(obj);//prints the reference ID obj.m(); } } 
Otestujte to hned

Výstup:

 A5@22b3ea59 A5@22b3ea59