Tak to jest, gdy komuś się nudzi … A oto skutki:

Klasa AArray
package beans3;

import java.beans.*;
import java.io.*;

public class AArray implements Serializable {
    private static final long serialVersionUID = 7344843959863070245L;
    private T[] array;
    private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public AArray(T[] array) {
        this.array = array;
    }

    public synchronized void addPropertyChangeListener(
            PropertyChangeListener list) {
        pcs.addPropertyChangeListener(list);
    }

    public synchronized void removePropertyChangeListener(
            PropertyChangeListener list) {
        pcs.removePropertyChangeListener(list);
    }

    public T[] getArray() {
        return array;
    }

    public synchronized void setValue(int index, T newValue) {
        T oldValue = array[index];
        array[index] = newValue;
        pcs.firePropertyChange("zmiana w array[" + index + "]",
                oldValue, newValue);
    }
}
Klasa Main
package beans3;

public class Main{

	public Main(){
		AArray tablica = new AArray<>(new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12});
		tablica.addPropertyChangeListener(evt -> {
			Integer newValue = (Integer)evt.getNewValue();
			System.out.println(evt.getPropertyName() + " na " + newValue);
		});
		for(int i = 0; i < tablica.getArray().length; i++){
			tablica.setValue(i, i * 2);
		}
	}

	public static void main(String[] args) {
		new Main();
	}
}

Tablica AArray informuje o każdej zmianie zawartości:

zmiana w array[1] na 2
zmiana w array[2] na 4
zmiana w array[3] na 6
zmiana w array[4] na 8
zmiana w array[5] na 10
zmiana w array[6] na 12
zmiana w array[7] na 14
zmiana w array[8] na 16
zmiana w array[9] na 18
zmiana w array[10] na 20
zmiana w array[11] na 22
zmiana w array[12] na 24

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *