package com.form.language.ast.type; import com.form.language.ast.values.GenericValue; import com.form.language.ast.values.StringValue; public final class StringType extends Type { @Override public boolean isStringType() { return true; } @Override public String toString() { return "String"; } @Override public GenericValue defaultValue() { return new StringValue(""); } @Override //This makes sense because there are no fields. Alternative is making this class a Singleton, but that does make the code less readable public boolean equals(Object o) { return (o instanceof StringType); } @Override public int hashCode() { return 0; } @Override public <T> T accept(TypeVisitor<T> visitor) { return visitor.visitStringType(this); } }