8 Ekim 2018 Pazartesi

Anonymous Sınıf

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
Like 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.
Örnek
Şö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