2012-11-23 120 views
16

Ứng dụng java của tôi có bộ nhớ cache và tôi muốn hoán đổi bộ nhớ cache hiện tại và thay thế bằng bộ nhớ cache ổi.bằng bộ nhớ đệm ổi không có chức năng tải

Thật không may, việc sử dụng bộ nhớ cache của ứng dụng của tôi dường như không khớp với cách bộ nhớ cache của ổi dường như hoạt động. Tất cả những gì tôi muốn là có thể tạo một bộ nhớ đệm trống, đọc một mục từ bộ nhớ đệm bằng cách sử dụng phương thức "get" và lưu trữ một mục trong bộ nhớ cache bằng phương thức "put". Tôi KHÔNG muốn cuộc gọi "get" đang cố gắng thêm một mục vào bộ nhớ cache.

Dường như lớp LoadingCache có các phương thức lấy và đặt mà tôi cần. Nhưng tôi đang gặp khó khăn trong việc tìm ra cách tạo bộ nhớ cache mà không cung cấp chức năng "tải".

nỗ lực đầu tiên của tôi là thế này:

LoadingCache<String, String> CACHE = CacheBuilder.newBuilder().build(); 

Nhưng điều đó gây ra này lỗi biên dịch: loại không phù hợp; không có (các) biến kiểu (type) K1, V1 tồn tại để Cache tuân theo LoadingCache

Dường như tôi phải chuyển vào CacheLoader có phương thức "tải".

(Tôi đoán tôi có thể tạo ra một CacheLoader rằng có một phương pháp "nạp" mà chỉ ném một ngoại lệ, nhưng điều đó dường như loại kỳ lạ và không hiệu quả. Đó có phải là điều đúng đắn nên làm gì?)

+0

Tôi muốn nói rằng (từ những thông tin bạn đã đăng), nó không có vẻ giống như bộ nhớ cache thay vì chỉ là Bản đồ. –

+2

@Sean Parsons: IMHO sự khác biệt quan trọng hơn giữa Cache và Map là trước đây có thể quên mọi thứ bất cứ lúc nào. Tải là một tính năng bổ sung. – maaartinus

+0

Tôi đã cố gắng làm sáng tỏ nếu nó thực sự là một bộ nhớ cache. –

Trả lời

22

CacheBuilder.build() trả về một bộ nhớ cache không tải. Chỉ là những gì bạn muốn. Chỉ cần sử dụng

Cache<String, String> cache = CacheBuilder.newBuilder().build(); 
+1

Đối với tôi, nó cho thấy lỗi thời gian biên dịch. nó không thể chuyển đổi từ thành generic. Tôi đang sử dụng lib này cho android. – CreativeManix

+1

@CreativeManix Bạn phải sử dụng lớp Cache không phải là LoadingCache. – Zai

+0

Cảm ơn @Zai Tôi đã hiểu. – CreativeManix

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