Pregunta

Tengo este constructor;

public UmlDiagramEntity(ReportElement reportElement, int pageIndex, Controller controller) {
    super(reportElement.getX1(), reportElement.getY1(), reportElement.getX2(), reportElement.getY2());
    setLayout(null);

    this.pageIndex = pageIndex;
    this.controller = controller;
    reportElements = reportElement.getInternalReportElements();
    components = new ArrayList<AbstractEntity>();
    changedComponentIndex = -1;

    PageListener p = new PageListener();
    this.addMouseMotionListener(p);
    this.addMouseListener(p);

    setPage();
}

Y tengo un método de actualización en la misma clase;

   @Override
    public void update(ReportElement reportElement) {
        if (changedComponentIndex == -1) {
            super.update(reportElement);
        } else {
            reportElements = reportElement.getInternalReportElements();
            if (components.size() == reportElements.size()) {
                if (!isCommitted) {
                    if (reportElement.getType() == ReportElementType.UmlRelation) {
                        if (checkInvolvementAndSet(changedComponentIndex)) {
                            anchorEntity(changedComponentIndex);
                        } else {
                            resistChanges(changedComponentIndex);
                        }
                        return;
                    }
                }
..................goes on

Cuando sigo la corriente desde el depurador, veo que cuando la actualización se llama, en algún lugar del método, el programa entra en el constructor y lo ejecuta de nuevo (super, pageIndex, etc.). ¿Por qué ir al constructor:. D no le dije que ir allí

Puedo hacer un análisis más profundo y ver a dónde va al constructor si lo desea. Por cierto, changedComponentIndex es una variable estática.

¿Fue útil?

Solución

Me parecería mucho más probable que usted está viendo que la construcción de dos objetos diferentes. Habría que dar más información como un seguimiento de la pila; Aquí ni siquiera han mostrado el constructor se invoca!

Otros consejos

El comportamiento que usted describe es prácticamente imposible. Puede ser que su código es diferente de lo que has demostrado o no estas depurar el código que usted piensa que va a depurar. Sin código completo que podemos ejecutar , eso es todo lo que podemos decir.

¿Está seguro de que la actualización no se llama indirectamente de dentro del constructor, lo que resultaría en un punto de interrupción en la actualización de conseguir disparado.

Trate de establecer un punto de interrupción en el inicio del constructor y al final, a continuación, uno de cada actualización. Al llegar al primer punto de interrupción constructor, pulsa 'continuar' y ver lo que se desencadena punto de interrupción siguiente.

Es multi-hilo de esto? Es posible que se llamó la constructora para una instancia diferente creada en otro hilo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top