Cześć Wam :)
Piszę właśnie program, w którym chcę uzyskać pewną pluginowość.
Mam abstrakcyjną klasę Pies, która posiada kilka składowych pól oraz metod. Chciałbym, abym mógł importować do swojego programu obiekty typu Pies - serializacja. Każdy taki obiekt ma posiadać swój edytor(GUI), który wprowadza zmiany w zmiennej properties.
Nie mogę stworzyć klasy, która będzie dziedziczyć po Pies, z tego względu, że wtedy musiałbym mieć tą konkretną klasę w programie, więc jedynym wyjściem jest stworzenie klasy anonimowej.
Klasa Pies:
public abstract class Pies implements Serializable {
public Pies(HashMap m) {
this.properties = new HashMap<>(m);
}
public abstract boolean edit();
public abstract String getName();
protected Map getProperties() {
return this.properties;
}
private Map properties;
}
Czy jedynym wyjściem jest tworzenie edytora, przy każdym wywołaniu metody?
public static void main(String[] args) {
try {
final Pies pies = new Pies(new HashMap<>()) {
public boolean edit() {
// final class Edytor extends JDialog....
return false;
}
public String getName() {
return "";
}
};
// --------- zapisywanie
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("jakis_pies")));
oos.writeObject(pies);
oos.close();
}
catch(Exception e) {e.printStackTrace();}
}
Można to zrobić inaczej?
Będę wdzięczny za cokolwiek.
Żebyśmy się dobrze zrozumieli - tworzę sobie jakiś model psa wraz z edytorem i wysyłam drugiej osobie, która to importuje go do programu... :)