Programování

Párová třída přichází na Javu přes JavaFX?

Třída párů je známá těm z nás, kteří používali C ++ po delší dobu. Ačkoli se hovoří o jeho přidání do Javy jako standardní součásti SDK, jedná se o poněkud kontroverzní téma. Několik lidí o to formálně požádalo a dokonce byly podány chyby (4947273, 4983155 a 6229146), které jej mají získat v Javě. V příspěvku s otázkou Chceme java.util.Pair? Dělá Alex Miller pěknou práci tím, že pokrývá obě strany problému.

Již existují implementace Pár nebo a Pár-jako ekvivalent tam venku pro Javu. Kromě neznámého počtu vlastních v místních kódových základnách existují veřejně dostupné příklady, jako jsou ty, které poskytuje post Java Pair Class, příklady poskytované ve vlákně StackOverflow, Ideograph's Generic Pair a (bez překvapení) Java Tuples's Pair. Sada Android SDK také obsahuje třídu Pair. Ten, který mě nejvíce překvapil, je existence třídy javafx.util.Pair JavaFX 2.0.

Název balíčku a třídy nejčastěji navrhovaný pro verzi SDK sady SDK Pár třída byla java.util.Pair a verze JavaFX je podobná v názvu balíčku: javafx.util.Pair. Spuštění javapu proti této třídě v JavaFX SDK vede k následujícímu výstupu.

Zkompilováno z „Pair.java“ veřejné třídy javafx.util.Pair {public K getKey (); public V getValue (); public javafx.util.Pair (K, V); public java.lang.String toString (); public int hashCode (); public boolean equals (java.lang.Object); } 

Jak je uvedeno výše javap output označuje, že se jedná o relativně jednoduchou třídu se základním parametrizovaným konstruktorem, metodami „get“ pro části klíče a hodnoty Pára „běžné“ metody toString (), rovná se (Objekt), a hashCode (). Následující výpis kódu ukazuje použití parametrizovaného konstruktoru k poskytnutí klíče a hodnoty každé instanci Pár to je instancováno.

 / ** * Poskytněte sbírku slavných párů. * * @return Sbírka slavných párů. * / soukromá statická sbírka createFamousPairs () {final Collection pair = nový ArrayList(); pair.add (nový pár ("Yin", "Yang")); pair.add (nový pár („Akce“, „Reakce“)); pair.add (nový pár („sůl“, „pepř“)); pair.add (nový pár ("Starsky", "Hutch")); pair.add (nový pár („Fox“, „Mulder“)); pair.add (nový pár („Batman“, „Robin“)); pair.add (nový Pair ("Fred Astaire", "Ginger Rogers")); pair.add (nový pár („Flotsam“, „Jetsam“)); pair.add (nový pár ("Brutus", "Nero")); pair.add (nový pár („Tom“, „Jerry“)); pair.add (nový pár („Jekyll“, „Hyde“)); pair.add (nový pár ("Holmes", "Watson")); pair.add (nový pár ("Mario", "Luigi")); pair.add (nový pár („Pinky“, „The Brain“)); pair.add (nový pár ("Wallace", "Gromit")); návratové páry; } 

Přístup ke klíči a hodnotě každého z nich Pár je také snadné, jak ukazuje následující ukázka kódu.

 / ** * Zapište poskytnutou kolekci párů na standardní výstup. * * @param title Název pro výstup zapsaný na standardní výstup. * @param pairToPrint Páry, které mají být zapsány na standardní výstup. * / private static void writeCollectionOfPairs (finální název řetězce, finální kolekce pairToPrint) {out.println (title + ":"); for (final Pair pair: pairToPrint) {out.println ("\ t" + pair.getKey () + "a" + pair.getValue ()); }} 

Výše uvedený příklad je poměrně vymyšlený, ale lze jej považovat za nejefektivnější použití Pár protože v tomto konkrétním příkladu je to skutečně reprezentovaný „párový“ koncept. Jedna z největších stížností na přidání Pár SDK nebo jeho obecné použití spočívá v tom, že není pojmenován dostatečně konkrétně, aby pokryl obchodní účel existence objektu. Vlastně jsem přemýšlel o použití JavaFX Pár třídy, když jsem psal svůj příklad Vánoční strom pro příspěvek Vánoční strom JavaFX 2.0 (Tvary JavaFX 2.0). Nakonec jsem se rozhodl proti tomu a použil jsem vhodněji pojmenovaný vnořený Koordinovat třída. Mohl jsem však snadno použít Pár v tom příkladu. Další výpis kódu obsahuje tento příklad s vnořeným Koordinovat třída odstraněna a odkazy na ni nahrazeny Pár.