Я бы хотел определить интерфейс с именем Tag
в пакете Java, над которым я работаю, но не решаюсь использовать такое название с обычным звучанием из-за проблемы коллизий. (например, вы можете импортировать только один класс или интерфейс с определенным именем; если существует более одного класса с одним и тем же именем, вы можете использовать импорт для одного из них, но для остальных вы должны явно указать полное имя пакета например, com.yoyodyne.games.outdoors.Tag)
У меня также нет более подробного названия для него (он должен представлять тег как теги в сообщениях StackOverflow или других онлайн-сайтах); самое близкое, о чем я могу подумать - это, возможно, TaxonomyTag.
Существуют ли стратегии для борьбы с этим? Единственное, о чем я могу подумать, это определить статический класс (например, Collections
), который содержит открытый интерфейс Tag
, например. если я назову это Taxonomy
, тогда я смогу импортировать Taxonomy
и обозначить тег как Taxonomy.Tag - но это звучит не намного полезнее.
edit: один широко известный пример этого столкновения - ca.odell.glazedlists.matchers.Matcher и java.util.regex.Matcher , который боль, если вы пытаетесь использовать регулярные выражения с библиотекой GlazedLists.