[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