Programmering

Par klasse Kommer til Java via JavaFX?

Parklassen er kendt for dem af os, der har brugt C ++ i nogen længere tid. Selvom der har været tale om at tilføje det til Java som en standarddel af SDK, er det et noget kontroversielt emne. Flere mennesker har formelt anmodet om det, og der er endda sendt fejl (4947273, 4983155 og 6229146) for at få det til Java. I et indlæg, der stiller spørgsmålet Vil vi have en java.util.Pair ?, gør Alex Miller et godt stykke arbejde med at dække begge sider af sagen.

Der er allerede implementeringer af Par eller a Par-lignende ækvivalent derude til Java. Udover det ukendte antal brugerdefinerede i lokale kodebaser er der offentligt tilgængelige eksempler som dem, der leveres af posten Java Pair Class, eksempler leveret i en StackOverflow-tråd, Ideographs Generic Pair og (ingen overraskelse) Java Tuples's Pair. Android SDK har også en par-klasse. Den, der har overrasket mig mest, er eksistensen af ​​JavaFX 2.0s klasse javafx.util.Pair.

Pakken og klassenavnet foreslås oftest til en SDK-version af Par klasse har været java.util. par og JavaFX-versionen er ens i pakkenavn: javafx.util. par. Kørsel af javap mod denne klasse i JavaFX SDK fører til følgende output.

Kompileret fra "Pair.java" offentlig klasse javafx.util.Pair {public K getKey (); offentlig V getValue (); offentlig javafx.util.Pair (K, V); offentlig java.lang.String tilString (); public int hashCode (); offentlige boolske lig (java.lang.Object); } 

Som ovenstående javap output angiver, dette er en relativt enkel klasse med en grundlæggende parametreret konstruktør, "get" -metoder til nøgle- og værdidele af Parog "almindelige" metoder toString (), er lig med (Objekt)og hashCode (). Den næste kodeliste demonstrerer ved hjælp af den parametriserede konstruktør til at give nøglen og værdien til hver forekomst af Par der er instantieret.

 / ** * Giv en samling af berømte par. * * @return Samling af berømte par. * / privat statisk samling createFamousPairs () {final Collection par = ny ArrayList(); pair.add (nyt par ("Yin", "Yang")); pair.add (nyt par ("handling", "reaktion")); pair.add (nyt par ("Salt", "Peber")); pair.add (nyt par ("Starsky", "Hutch")); pair.add (nyt par ("Fox", "Mulder")); pair.add (nyt par ("Batman", "Robin")); pair.add (nyt par ("Fred Astaire", "Ginger Rogers")); pair.add (nyt par ("Flotsam", "Jetsam")); pair.add (nyt par ("Brutus", "Nero")); pair.add (nyt par ("Tom", "Jerry")); pair.add (nyt par ("Jekyll", "Hyde")); pair.add (nyt par ("Holmes", "Watson")); pair.add (nyt par ("Mario", "Luigi")); pair.add (nyt par ("Pinky", "Hjernen")); pair.add (nyt par ("Wallace", "Gromit")); returpar; } 

Adgang til nøglen og værdien for hver Par er også let som vist i den næste kodeeksempel.

 / ** * Skriv den medfølgende samling af par til standardoutput. * * @param titel Titel til output skrevet til standard output. * @param pairToPrint Par, der skal skrives til standardoutput. * / private static void writeCollectionOfPairs (final String title, final Collection pairToPrint) {out.println (titel + ":"); for (final Pair pair: pairsToPrint) {out.println ("\ t" + pair.getKey () + "og" + pair.getValue ()); }} 

Ovenstående eksempel er relativt konstrueret, men kan hævdes at være en mest effektiv anvendelse af Par fordi det i det særlige eksempel virkelig er et "par" -koncept, der repræsenteres. En af de største klager over tilføjelse Par til SDK eller at bruge det generelt er, at det ikke er navngivet specifikt nok til at dække det forretningsformål til et objekts eksistens. Jeg havde faktisk tænkt på at bruge JavaFX Par klasse, da jeg skrev mit eksempel på et juletræ til indlægget JavaFX 2.0 juletræ (JavaFX 2.0-former). Jeg endte med at beslutte imod dette og brugte en mere passende navngivet indlejret Koordinere klasse. Jeg kunne dog let have brugt det Par i dette eksempel. Den næste kodeliste indeholder netop dette eksempel med den indlejrede Koordinere klasse fjernet og henvisninger til den erstattet af Par.