Las dependencias circulares no siempre se deben evitar. Los evitaría en general, pero los mantengo en pequeños rincones de un sistema. En general, es decir, si la capa de acceso a datos y la capa de representación de la aplicación J2EE dependen de la circular, diría que es algo malo, porque significa que todo debe compilarse de una sola vez y que las pruebas son una pesadilla. Pero no hay problema si una lista de estructura de datos y su tipo de iterador son dependientes de forma circular.
Como Findbugs sugiere utilizar interfaces para romper una dependencia circular. Es decir, introducir una interfaz para al menos un tipo del círculo y hacer que las otras clases utilicen la interfaz en todas partes. ¿Necesitas un código de ejemplo?
¿Qué hay de malo con las referencias circulares en primer lugar? ¿Por qué querrías romperlos? Tal vez deberías señalar esto en tu pregunta. – Mecki
bueno, no sé ... ¡suponiendo que sea un antipatrón que quiero evitar! y con fines educativos, para verificar diferentes posibilidades de diseño.! – tropicana
¿Los ref circulares son un antipatrón? ¿Dice quién? El GC de Java no tiene ningún problema con ellos para las instancias (solo un GC que usa recuento de referencia puro tendría tal problema) y el compilador no tiene ningún problema con ellos en tiempo de compilación, aparte de que debe compilar ambas clases al mismo tiempo, para que el compilador pueda resolver las dependencias. Por cierto, te perdiste una etiqueta importante: java. Arreglaré las etiquetas para ti. – Mecki