Sto costruendo un complesso albero di oggetti. Esistono cinque tipi, A , B , C , D e E . Esiste una singola istanza di A , che è il nodo radice. A ha uno o più B s come figli, ogni B ha uno o più C s come figli e così via. Il formato dati originale è uno stream che consiste di 5 numeri (ID numerici per A , B , C , D e E ) più i metadati che possono essere associati a ciascuno di essi.
Sto tentando di aggiungere un certo livello di filtraggio al mio albero. Il mio attuale approccio è quello di prendere l'input e passarlo nel costruttore per A e quindi scorrerlo verso il basso in B s che A costrutto e C s che B costruisce e così via. Tuttavia, il filtro si verifica in definitiva al livello di E . Se tutto il E s per un dato D non esiste, non voglio creare quel D . Se C non ha D s, non voglio che C esista.
Il mio pensiero iniziale è di lanciare un'eccezione, ma sembra utilizzare le eccezioni per il controllo del flusso. Sebbene alcune lingue favoriscano le eccezioni, attualmente sto lavorando in Java, dove la tendenza è che le eccezioni siano per condizioni eccezionali. Non penso che non corrispondere a un filtro sia un caso eccezionale.
Quali sono le mie opzioni per garantire che il mio albero finale contenga solo nodi con figli e il filtro sia applicato?