package com.ilummc.tlib.bean; import java.util.ArrayList; import java.util.List; import java.util.function.BiConsumer; public class Property { private Property(T value) { this.value = value; } private List> consumers; private T value; public void set(T value) { if (value != this.value) { if (consumers != null) { for (BiConsumer consumer : consumers) { consumer.accept(this.value, value); } } this.value = value; } } public T get() { return value; } public void addListener(BiConsumer consumer) { if (consumers == null) { consumers = new ArrayList<>(); } consumers.add(consumer); } public static Property of(T value) { return new Property<>(value); } }