package st; import java.util.ArrayList; public abstract class AbstractInstance { protected String name; // the literal name of the declaration protected TypeEnum type; // the type of the declaration protected ClassInstance cls; // the surrounding class public AbstractInstance(String name, TypeEnum type) { this.type = type; this.name = name; } @Override public String toString() { return this.name; } public boolean equals(AbstractInstance other) { return this.name == other.getName() && this.type == this.type; } @Override public int hashCode() { return this.name.hashCode(); } public void addClassInstance(ClassInstance cls) { this.cls = cls; } public String getName() { return this.name; } public TypeEnum getType() { return this.type; } public ClassInstance getClassInstance() { return this.cls; } }