Sto sviluppando un'applicazione in Java per cui vorrei passare un oggetto come parte di un'interfaccia in altri metodi di classi scritti da altri sviluppatori nel team. L'oggetto che sto passando ha setter e getter nel modo normale, ma non voglio che alcune delle classi scritte da altri accedano ad alcuni dei setter dell'oggetto passato (diversi setter sarebbero disponibili per classi diverse quando usa l'oggetto). È possibile in Java? vale a dire quali classi possono utilizzare quali metodi in altre classi su una base per classe?
Immagino che cosa mi piacerebbe fare è qualcosa come:
someObject.method(passInObject[but don't give access to passInObject.thisSetter])
Dove "someObject" è un oggetto di una classe scritta da un membro del team e "passInObject" è un oggetto della mia classe ma voglio proteggere alcuni dei membri in essa contenuti da questa specifica classe someObject.
Sto indovinando no e avrò bisogno di usare l'ereditarietà per scavalcare quei setter che non voglio che altri moduli specifici usino / vedano, ma sembra clunky avere una nuova classe ereditata per usare la classe basata sulla protezione di alcuni interni valori solo da alcuni usando classi. Potrei controllare il codice che il valore di un membro non è stato modificato, ma è troppo tardi e il danno è stato fatto (la cancellazione potrebbe essere costosa). Potrei controllare il nome della classe nel metodo setter stesso e non fare nulla se il nome è su un elenco "vietato", ma sembra molto goffo e incline agli errori. Quello che voglio è il codice chiamante per limitare quali membri possono essere chiamati nell'oggetto passato.
O mi manca qualcosa e c'è un modello comune per affrontare questo?