Ich möchte eine Schnittstelle mit dem Namen Tag
in einem Java-Paket, an dem ich arbeite, definieren, bin aber zögerlich, einen solch klingenden Namen zu verwenden wegen des Kollisionsproblems. (Sie können z. B. nur eine Klasse oder Schnittstelle mit einem bestimmten Namen importieren; falls es mehrere gibt, die denselben Namen haben, können Sie den Import für einen von ihnen verwenden, aber den Rest müssen Sie explizit mit dem gesamten Paketnamen referenzieren) zB com.yoyodyne.games.outdoors.Tag)Entwerfen von Java-Schnittstellen mit normal klingenden Namen, die mit anderen Paketen "gut spielen"
Ich habe auch keinen wirklich detaillierten Namen dafür (es soll ein Tag wie die Tags in StackOverflow-Posts oder anderen Online-Websites darstellen); Am nächsten kommt vielleicht TaxonomyTag.
Gibt es Strategien, um damit umzugehen? Der einzige, den ich mir vorstellen kann, ist eine statische Klasse (wie Collections
) zu definieren, die eine öffentliche Schnittstelle Tag
, z.B. wenn ich es Taxonomy
nenne, dann kann ich Taxonomy
importieren und auf Tag als Taxonomy.Tag verweisen - aber das klingt nicht viel hilfreicher.
edit: ein weithin bekanntes Beispiel für diese Kollision ist ca.odell.glazedlists.matchers.Matcher und java.util.regex.Matcher, die ein Schmerz ist, wenn Sie reguläre Ausdrücke mit der GlazedLists Bibliothek zu verwenden versuchen.
Oder java.util.List und java.awt.List – KitsuneYMG