/* * Copyright (c) 2012 Sam Harwell, Tunnel Vision Laboratories LLC * All rights reserved. * * The source code of this document is proprietary work, and is not licensed for * distribution. For information about licensing, contact Sam Harwell at: * sam@tunnelvisionlabs.com */ package org.antlr.netbeans.semantics; import org.netbeans.api.annotations.common.CheckForNull; import org.netbeans.api.annotations.common.NonNull; import org.openide.util.Parameters; /** * * @author Sam Harwell * @param <T> */ public class ObjectProperty<T> { private final String name; private final T defaultValue; public ObjectProperty(@NonNull String name) { this(name, null); } public ObjectProperty(@NonNull String name, T defaultValue) { Parameters.notNull("name", name); this.name = name; this.defaultValue = defaultValue; } @NonNull public String getName() { return name; } @CheckForNull public T getDefaultValue() { return defaultValue; } @Override public boolean equals(Object obj) { if (!(obj instanceof ObjectProperty<?>)) { return false; } ObjectProperty<?> other = (ObjectProperty<?>)obj; return this.getName().equals(other.getName()); } @Override public int hashCode() { return name.hashCode(); } @Override public String toString() { if (defaultValue != null) { return name + "(" + defaultValue + ")"; } return name; } }