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);
  }
}

15 Temmuz 2017 Cumartesi

Exchanger Sınıfı

Giriş
Şu satırı dahil ederiz
import java.util.concurrent.Exchanger;
İki thread arasında nesne değiş tokuşu için kullanılır. Açıklaması şöyle. Yani bu sınıfı T tipi ile kullanmak gerekir. Bu sınıf sadece exchange() metodu sağlar. Her iki thread'de bu metodu çağırmak zorundadır. Birbirlerine veri geçerler.
The Exchanger class in Java can be used to share objects between two threads of type T. The class provides only a single overloaded method exchange(T t).

When invoked exchange waits for the other thread in the pair to call it as well. At this point, the second thread finds the first thread is waiting with its object. The thread exchanges the objects they are holding and signals the exchange, and now they can return.

constructor
Şöyle yaparız.
Exchanger<String> exchanger = new Exchanger<String>();
exchange metodu
İlk thread, ikinci thread'in sonucunu okur ve ikinci thread'e boş bir string gönderir. Şö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]

12 Temmuz 2017 Çarşamba

InetSocketAddress Sınıfı - IP + Port Numarası

Giriş
SocketAddress sınıfından kalıtır. 

InetAddress  vs InetSocketAddress 
Açıklaması şöyle
- An InetAddress corresponds to the Network Layer (Layer 3) and is basically an IP address.
- A InetSocketAddress corresponds to the Transport Layer (Layer 4) and consists of an IP address and a port number.

constructor - string + int
Şöyle yaparız.
String address = "8"8.8.8.8";int port = 53;
SocketAddress sockaddr = new InetSocketAddress(address, port);

9 Temmuz 2017 Pazar

CertificateFactory Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
Bu sınıfı bir X509Certificate sertifikasını stream'den okumamız sağlar.

generateCertificate metodu
Örnek
Şöyle yaparız.
InputStream inStream = new FileInputStream("crypt.cer");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream);
Örnek
Exceptionları da dikkate alarak şöyle yaparız.
String keyStorePath = ...;

PublicKey publickey = null;     
FileInputStream fis;
try {
  fis = new FileInputStream(keyStorePath);

  CertificateFactory cf = CertificateFactory.getInstance("X.509");        
  Certificate c = cf.generateCertificate(fis);
  publickey = c.getPublicKey(); 
} catch (CertificateException e) {
  ...
}         
getInstance metodu
Şöyle yaparız.
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Default provider yerine başka bir provider kullanmak için şöyle yaparız.
CertificateFactory cf = CertificateFactory.getInstance(X.509, BC);