Maven: <dependency> <groupId>org.realityforge.arez</groupId> <artifactId>arez-annotations</artifactId> <version>0.196</version> </dependency> Gradle: groovy implementation 'org.realityforge.arez:arez-annotations:0.196' import arez.annotations.ArezComponent; import arez.annotations.Observable; @ArezComponent public class ObservableObject { private String name; @Observable public String getName() { return name; } @Observable public void setName(String name) { this.name = name; } } import arez.annotations.ArezComponent; import arez.annotations.Observable; import arez.annotations.Observe; import arez.annotations.Observer; @ArezComponent public class ObserverObject { private String name; @Observable public String getName() { return name; } @Observable public void setName(String name) { this.name = name; } @Observe public void observeName() { System.out.println("Name changed: " + name); } } import arez.ArezConfig; import arez.ArezContext; import arez.ArezContextProvider; import arez.annotations.Action; import arez.annotations.ArezComponent; import arez.annotations.Observable; public class ArezConfigExample { private static final ArezContext c_invariantContext = new ArezContextProvider(); public static ArezContext getContext() { return c_invariantContext; } @ArezComponent public static class ExampleComponent { private String name; @Observable public String getName() { return name; } @Observable public void setName(String name) { this.name = name; } @Action public void updateName(String newName) { c_invariantContext.safeAction(() -> { setName(newName); }); } } public static void main(String[] args) { ArezConfig config = ArezConfig.create(); config.setArezContextProvider(() -> ArezConfigExample.getContext()); ArezContext context = ArezContext.create(config); ExampleComponent example = new ExampleComponent(); example.setName("John"); context.action("Update name", () -> { example.updateName("Bob"); }); context.dispose(); } }


上一篇:
下一篇:
切换中文