package org.solovyev.android.calculator; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import javax.annotation.Nonnull; public class Named<T> { @NonNull public final T item; @NonNull public final CharSequence name; private Named(@NonNull T item, @Nonnull String name) { this.item = item; this.name = name; } @NonNull public static <T> Named<T> create(@NonNull T item, @Nonnull String name) { return new Named<T>(item, name); } @NonNull public static <T> Named<T> create(@NonNull T item, @StringRes int name, @NonNull Context context) { return create(item, name == 0 ? item.toString() : context.getString(name)); } @Override public String toString() { return name.toString(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; final Named<?> that = (Named<?>) o; return item.equals(that.item); } @Override public int hashCode() { return item.hashCode(); } }