"Dış" parantezleri anonim bir alt sınıf oluşturduğunuz anlamına gelir, ikinci parantezler nesne başlatıcısıdır. Başlatıcı, sınıf yapıcısından önce çalıştırılır, ancak herhangi bir super
çağrısından sonra (ve dolayısıyla herhangi bir üst sınıf başlatıcıdan sonra). Başlatıcıları, anonim olmayan sınıflarda da kullanabilirsiniz, bu da birbirinizi arayaamayan birkaç kurucuya sahipseniz veya olağan alan başlatıcılarının izin verdiğinden daha karmaşık başlatma gerektiren alanlara sahipseniz, final
alanlarını başlatmak için uygun bir yoldur. başlatıcı bir kontrol istisna Eğer tüm kurucular bunu atabilir ilan etmeli,
class X extends Y{
private final int lulz;
private static boolean someCondition(){...}
private static boolean danger() throws SomeException { ... }
{ // initalizer -- might throw SomeException!
lulz = someCondition()? danger() : 0;
}
public X(A a) throws SomeException { super(a); }
public X(B b) throws SomeException { super(b); }
}
:
class X extends Y{
private final int lulz;
private static boolean someCondition(){...}
private static boolean danger() throws SomeException { ... }
public X(A a) throws SomeException {
super(a);
lulz = someCondition()? danger() : 0;
}
public X(B b) throws SomeException {
super(b);
lulz = someCondition()? danger() : 0;
}
}
Bu şekilde tekrar yazılabilir:
bu sınıfı düşünün.
Sanırım çift kaşlı ayraçlar için Google'a kolay değil. –
@Tom Hawtin: Bunun yerine Google'da "çift parantez" için ... –