From 5eab6e9e299f84da9898167568d76394657dee70 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Fri, 3 Feb 2023 14:11:27 +0100 Subject: refactor: Symbol as record Makes the intent of the code clearer by explicitly overriding equals and hashCode for by-reference comparison. Also fixes Sonar warning. --- .../refinery/store/representation/Symbol.java | 36 +++++----------------- 1 file changed, 8 insertions(+), 28 deletions(-) (limited to 'subprojects') diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java b/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java index 77fae5f4..85ea15f4 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java @@ -2,40 +2,20 @@ package tools.refinery.store.representation; import java.util.Objects; -public final class Symbol implements AnySymbol { - private final String name; - private final int arity; - private final Class valueType; - private final T defaultValue; - - public Symbol(String name, int arity, Class valueType, T defaultValue) { - this.name = name; - this.arity = arity; - this.valueType = valueType; - this.defaultValue = defaultValue; - } - - @Override - public String name() { - return name; +public record Symbol(String name, int arity, Class valueType, T defaultValue) implements AnySymbol { + public boolean isDefaultValue(T value) { + return Objects.equals(defaultValue, value); } @Override - public int arity() { - return arity; + public boolean equals(Object o) { + return this == o; } @Override - public Class valueType() { - return valueType; - } - - public T defaultValue() { - return defaultValue; - } - - public boolean isDefaultValue(T value) { - return Objects.equals(defaultValue, value); + public int hashCode() { + // Compare by identity to make hash table lookups more efficient. + return System.identityHashCode(this); } @Override -- cgit v1.2.3-54-g00ecf