2009-10-07 23 views
5

Tôi đang sử dụng Eclipse và tôi đã thêm google-collect.1.0-rc2.jar làm thư viện được tham chiếu. Tuy nhiên, bằng cách nào đó điều này vẫn không làm việc:Java: Khởi tạo HashBiMap của Google Collection

import com.google.common.collect.HashBiMap; 

public class Odp {   
    //... 

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

Eclipse cung cấp cho các lỗi sau đây:

Nhiều dấu tại dòng này

  • HashBiMap không thể giải quyết
  • Character.Integer không thể được giải quyết
  • Lỗi cú pháp trên mã thông báo ",", "." dự kiến ​​
  • Lỗi cú pháp được tấm vé về "", xóa thẻ
  • phương pháp này create() là undefined cho lớp ODP

Tôi đang làm gì sai?

Nội dung khác của Google, như Joiner, hoạt động tốt. (Nhưng Joiner là không chung chung.)

+0

được thông báo lỗi là gì? –

Trả lời

20

Khi gọi chức năng chung tĩnh, bạn không vượt qua các thông số type:

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

Cũng thực sự bạn không nên mã để các lớp thực hiện, vì vậy bạn tốt hơn hết làm

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

hoặc

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

ở đó chúng tôi đi. Cảm ơn. –

+0

bạn có thể giải thích quan điểm của mình về "bạn không nên viết mã cho lớp triển khai không?" –

+10

Nhiều khả năng, phần còn lại của mã của bạn chỉ quan tâm đến việc bạn đang sử dụng Map/BiMap (cả hai giao diện), không phải là bạn đang sử dụng HashBiMap vs TreeBiMap (không chắc chắn nếu điều này tồn tại) hoặc một số thực thi BiMap khác. Bằng cách mã hóa giao diện và không thực hiện, nếu bạn muốn trao đổi việc triển khai bên dưới bạn sử dụng (giả sử bạn quyết định bạn nên sử dụng TreeMap thay vì HashMap, vì bạn muốn đặt hàng), thì bạn chỉ phải thực hiện thay đổi ở một vài nơi. –

Các vấn đề liên quan