Ich habe eine Modellklasse (MVC pattern), die ich in zwei Eclipse-Projekten verwende.Zugriff auf package-private Felder in Klassen, die in Eclipse-Projekten freigegeben sind
Ein Projekt, nennen wir es Producer
, erfasst Daten aus einem Stream und speichert sie in einer Datenbank. Die betreffende Modellklasse, z. B. ObjectModel
, wird verwendet, um den Stream für die Manipulation zu deserialisieren, bevor er serialisiert und in der Datenbank gespeichert wird.
Ein anderes Projekt, nennen wir es Consumer
, zieht die in der Datenbank gespeicherten Daten ein und visualisiert sie auf dem Bildschirm. Es verwendet dieselbe Modellklasse, um die gespeicherten Daten für die Verwendung in der Visualisierungsanwendung zu deserialisieren.
Ich plante, ObjectModel
in ein Eclipse-Projekt zu setzen, um seine Quelle über die Producer
und Consumer
Projekte zu teilen. Jede Anwendung verfügt jedoch über Klassen, die sich derzeit im selben Paket befinden und die den Modifikator "package-private access" zum Abrufen und Festlegen von Feldern in ObjectModel
verwenden.
Gibt es eine Möglichkeit, die Quelle über mehrere Eclipse-Projekte hinweg zu teilen und dennoch den paketprivaten Zugriff mit der gemeinsam genutzten Quelle beizubehalten?
AKTUALISIEREN: Ich hatte Probleme, Code über Eclipse-Projekte freigegeben zu bekommen, weshalb ich dies nicht vor dem Posten versuchte. Endlich hat dieser Teil funktioniert, und schrieb es als eine andere Antwort here.
können Sie näher erläutern, warum Sie den privaten Paketzugriff mit der gemeinsamen Quelle beibehalten möchten? – Vikdor
'Producer' hat eine Klasse,' ObjectModelFactory', die 'ObjectModel'-Instanzen erstellt, die Daten aus mehreren unterschiedlichen Streams kapseln. 'Consumer' hat eine Klasse,' ObjectModelMerger', die Live-Updates in deserialisierte 'ObjectModels' zusammenfasst. Viel schöner für jede dieser Klassen, direkt auf 'ObjectModel'-Felder zuzugreifen, als durch Zugriffsmethoden zu gehen, insbesondere da in keinem Teil der Programme außer 'ObjectModelFactory' und' ObjectModelMerger' Setter benötigt werden - was ich gerne einschränken würde Zugriff auf die Einstellung von 'ObjectModel'-Feldern. – ericsoco