31 Temmuz 2017 Pazartesi

super Anahtar Kelimesi

Giriş
super() çağrısı yapılmasa bile derleyici bizim için otomatik yapar.

super ve this
super ve this aynı constructor içinde kullanılamaz. Şu kod derlenmez.
class Point {

  private int x, y;

  public Point(int x, int y) {
    this.x = x;
    this.y = y;
  }

  public Point() {
    super();
    this(0, 0);
  }
}

Period Sınıfı

Giriş
Açıklaması şöyle
A date based amount of time e.g. 5 days.
Period sınıfı, Duration sınıfının aksine java.lang.Comparable arayüzünü gerçekleştirmez. Period artık yıl, yaz saati gibi şeyleri hesaba katar.

Kullanım
ofX() metodu ile yaratılan period nesnesine plus() çağrısı ile diğer süreler eklenir. Şöyle yaparız.
Period.ofYears(1).plus(Period.ofWeeks(1));
of metodları sürekli yeni nesne ürettiği için 1 yıl 1 hafta yaratmak için şu kod yanlış. Elimize sadece 1 hafta geçer.
Period wrong = Period.ofYears(1).ofWeeks(1);
ofWeeks metodu
Açıklaması şöyle
The resulting period will be day-based, with the amount of days equal to the number of weeks multiplied by 7. The years and months units will be zero.
Şöyle yaparız.
Period p = Period.ofWeeks(3);
ofYears metodu
Şöyle yaparız.
Period p = Period.ofYears(1);
withDays metodu
Şöyle yaparız. 3 ay 2 gün elde ederiz.
Period p = Period.ofMonths(3);
p = p.withDays(2);
Şu kullanım yanlış.
Period p = Period.ofWeeks(3);
p = p.withDays(2);

30 Temmuz 2017 Pazar

Collection Arayüzü

Giriş
Iterable arayüzünden kalıtır. Stream arayüzüne uğramadan bazı faydalı şeyleri şöyle yaparız.

contains metodu
Şöyle yaparız.
if (list.contains(input)) {
  ...
}
removeIf metodu
Java 8 ile geldi. Elimizde şöyle bir liste olsun.
ArrayList<Person> peeps = new ArrayList<Person>(); 

peeps.add(new Person("112", "John", "Smith"));
peeps.add(new Person("516", "Jane", "Smith"));
peeps.add(new Person("114", "John", "Doe"));
Bazı elemanları silmek için şöyle yaparız.
peeps.removeIf(p -> p.getId().equals("112"));

15 Temmuz 2017 Cumartesi

Exchanger Sınıfı

Giriş
İki thread arasında nesne değiş tokuşu için kullanılır.

constructor
Şöyle yaparız.
Exchanger<String> exchanger = new Exchanger<String>();
exchange metodu
İlk thread yani consumer ikinci thread'in sonucunu okur ve ikinci thread'e boş bir string atar. Şöyle yaparız.
// Wait for thread's output
String data;
try {
  data = exchanger.exchange("");
} catch (InterruptedException e1) {
  // Handle Exceptions
}
İkinci thread bir sonuç döner. Şöyle yaparız.
try {
   exchanger.exchange(data)
} catch (InterruptedException e) {

}

KeyEvent Sınıfı

getKeyCode metodu
Şöyle yaparız.
@Override
public void keyPressed(KeyEvent e) {
  if(e.getKeyCode() == KeyEvent.VK_0){
    ...
  }      
  else if(e.getKeyCode() == KeyEvent.VK_DOWN){
    ...
  }
  ...
}
toString metodu
Şöyle yaparız.
new java.awt.Frame(){
  {
    addKeyListener(new KeyAdapter(){
      public void keyPressed(KeyEvent e){
        System.out.println(e);
      }
    });
    ...
  }
};
Çıktı olarak şunu alırız.
KeyEvent[KEY_PRESSED,keyCode=27,keyText=Escape,keyChar=Escape,
keyLocation=KEY_LOCATION_STANDARD,rawCode=27,primaryLevelUnicode=27,scancode=1,
extendedKeyCode=0x1b]