2009-10-07 13 views
5

Korzystam z Eclipse i dodałem google-collect.1.0-rc2.jar jako bibliotekę, do której następuje odwołanie. Jeszcze jakoś to nadal nie działa:Java: Wykreśl HashBiMap Google Collection

import com.google.common.collect.HashBiMap; 

public class Odp {   
    //... 

    HashBiMap<Character, Integer> charOcc = 
     HashBiMap<Character, Integer>.create();  
} 

Eclipse daje następujące błędy:

wielu znaczników na tej linii

  • HashBiMap nie mogą być rozwiązane
  • Character.Integer nie może być rozwiązany
  • Błąd składni na tokenie ",", "." Oczekuje
  • błąd składni na znak „”, należy usunąć ten żeton
  • Sposób tworzenia() jest zdefiniowana dla klasy Odp

Co robię źle?

Inne rzeczy Google, takie jak Joiner, działają bez zarzutu. (Ale Joiner nie jest nazwą rodzajową.)

+0

Co znajduje się komunikat o błędzie? –

Odpowiedz

20

Dzwoniąc statyczne funkcje rodzajowe, nie zdać parametry Typ:

HashBiMap<Character, Integer> charOcc = HashBiMap.create(); 

Także naprawdę nie powinno się kod do klasy implementacji, więc jesteś lepiej robić

Map<Character, Integer> charOcc = HashBiMap.create(); 

lub

BiMap<Character, Integer> charOcc = HashBiMap.create(); 
+0

jesteśmy tam. Dzięki. –

+0

Czy możesz wyjaśnić swój punkt o "nie powinieneś kodować do klasy implementacji?" –

+10

Najprawdopodobniej reszta kodu dba tylko o to, że używasz Map/BiMap (które są obydwoma interfejsami), a nie, że używasz HashBiMap vs TreeBiMap (nie wiesz, czy to istnieje) lub jakiejś innej implementacji BiMap. Kodując do interfejsu, a nie do implementacji, jeśli kiedykolwiek chcesz zamienić podstawową implementację, której używasz (załóżmy, że zdecydujesz, że powinieneś używać mapy drzewa zamiast HashMap, ponieważ chcesz zamówić), to musisz tylko dokonać zmiany w bardzo niewielu miejscach. –