Giriş
Java bir sınıf içinde başka bir sınıf tanımlamaya izin verir. Bu iç sınıf 3 farkı şey olabilir.
1. Static Nested Sınıf
2. Non-Statıc Nested Sınıf
3. Anonymous Sınıf
Anonymous Sınıf Nedir?
Açıklaması şöyle
Şöyle yaparız.
ÖrnekLike local classes, anonymous classes can capture variables; they have the same access to local variables of the enclosing scope:
- An anonymous class has access to the members of its enclosing class.
- An anonymous class cannot access local variables in its enclosing scope that are not declared as final or effectively final.
- Like a nested class, a declaration of a type (such as a variable) in an anonymous class shadows any other declarations in the enclosing scope that have the same name. See Shadowing for more information.
Şöyle yaparız.
Thread t1 = new Thread(){
public void run(){
try {
sleep(1000);
} catch (InterruptedException e) {}
}
};
Örnek
Açıklaması şöyle
The first parenthesis set create an anonymous class and second parenthesis set creates the content inside the class. The methods that are called inside the anonymous class refer to the main class by a hidden “this” keyword. So we doesn’t need to mention the keyword.
Şöyle yaparız.
class Parent {
private int a = 10;
void addTwo() {
a += 2;
}
void showValueOfA() {
System.out.println(a);
}
}
public class Main {
public static void main(String[] args) {
// anonymous class
new Parent() {{
// no need to mention the keyword "this"
addTwo();
addTwo();
addTwo();
showValueOfA();
}};
}
}
// Output: 16
Üretilen class dosyaları şöyle. $ karakteri Main dosyasında bir tane Anonymous Sınıf olduğunu gösterir.Main.class
Main$1.class
Parent.class
Hiç yorum yok:
Yorum Gönder