[Javalist] Hogyan kényszerítsünk egy anonymous classt bizonyos dolgok megadására

Gábor Lipták gabor.liptak at gmail.com
2013. Jan. 31., Cs, 13:04:06 CET


Sziasztok!

Szóval adott a névtelen osztály, aminek nem lehetnek konstruktor
argumentumai. És adott egy abstract osztály amit névtelen osztályként
akarok használni, ám muszály bizonyos dolgokat megkapnia a nem absztrakt
metódusnak ahhoz, hogy működjön.

Konkrét példa: ICheckStateProvider JFace-ben. Akarok egy implementációt ami
a isGrayed metódusra fix megoldást ad, de az isChecked metódust szabadon
hagyja. Ezt ötlöttem ki:

public abstract class ContentBasedGrayingCheckStateProvider {
protected InnerDelegate delegate = new InnerDelegate();
protected ITreeContentProvider contentProvider;
 public abstract boolean isChecked(Object element);

public boolean isGrayed(Object element) {
//Itt tudok valamit csinálni a contentProviderrel
return false;
}
 public ICheckStateProvider withContentProvider( ITreeContentProvider
contentProvider ) {
this.contentProvider = contentProvider;
return delegate;
}

protected class InnerDelegate implements ICheckStateProvider {

@Override
public boolean isChecked(Object element) {
return ContentBasedGrayingCheckStateProvider.this.isChecked(element);
}

@Override
public boolean isGrayed(Object element) {
return ContentBasedGrayingCheckStateProvider.this.isGrayed(element);
}
}
}

Felhasználni így kell majd:

ITreeContentProvider cp = ...;
new CheckboxTreeViewer(...).setCheckStateProvider( new
ContentBasedGrayingCheckStateProvider() {
 @Override
public boolean isChecked(Object element) {
// TODO Auto-generated method stub
return false;
}
}.withContentProvider(cp));

Mi a véleményetek? Nem akarok annyi nevesített osztályt gyártani. Rossz
vagyok? Jobb ötletek van?

Gábor
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20130131/85281905/attachment.html>


További információk a(z) Javalist levelezőlistáról