2011-01-08 9 views
30

W języku C#instancję Słownik <T, U> omyłkowo Java

Dictionary<String, String> dictionary = new Dictionary<String, String>(); 

W Javie, to błędy z

Nie można instancję typu Słownik

Co może być źle?

W moim kodu wynika to z

dictionary.put("vZip", jsonUdeals.getString("vZip")); 

Wiem, brzmi to zbyt trywialne. Ale jestem zagubiony!
Jeśli słownik nie robi tego (co do tej pory podejrzewam), to z której bazy danych należy skorzystać.

+8

Pierwsza zasada programowania w języku Java: jeśli masz problemy z określoną klasą lub metodą w standardowym interfejsie API, przeczytaj dokument API przed wykonaniem jakichkolwiek czynności jeszcze. –

+1

dzięki mate. IMHO, które również dotyczy C#. :) Rzeczywiście w to zaglądałem. Po prostu przeoczyłem słowo abstrakcja w definicji. C# ma również słownik , który w ogóle nie jest abstrakcyjny. Dodatkowo, zapoznałem się z IDE Eclipse również – naveen

Odpowiedz

67

Dictionary jest abstrakcyjna klasa w Javie. Jest również przestarzały; zamiast tego należy użyć interfejsu Map; coś takiego:

Map<String,String> map = new HashMap<String,String>(); 

Zauważ, że HashMap<K,V> jest beton klasy, ale jesteśmy przypisanie go do Map<K,V> odniesienia, który jest interfejsem. Jest to zalecany styl w języku Java, ponieważ umożliwia przełączanie HashMap np. Hashtable na późniejszym etapie, bez konieczności zmiany wszystkiego.

+0

zapuszczania do java z C# i podoba mi się to, co widzę :) – naveen

+16

@naveen: Już niedługo będziesz przerażony przez np. jak śmieci są generics Java i brak przeciążenia operatora itp. ...! –

+0

Bardzo często czytam Jona Skeeta, więc wiem, że podoba mi się tony Eclipse IDE lepsze niż Visual Studio. refaktoryzacja to zupełnie nowy poziom. – naveen

3

Użyj HashMap następująco:

Map<String, String> dictionary = new HashMap<String, String>(); 
0

słownik jest klasa dziedzictwo. To samo można osiągnąć za pomocą programu hasmap lub concurrentHashMap (jeśli wymagana jest synchronizacja Java 8)

Powiązane problemy