2012-11-19 11 views
5

Tôi có vấn đề sau: Chúng tôi có một dự án scala-java được chia sẻ (với thành viên chỉ viết mã java), do đó chúng tôi sử dụng liệt kê java cho một mục đích. Nhưng bây giờ tôi muốn thực hiện mô hình phù hợp trong scala trên điều tra này, và tối ưu hóa nó với @switch, kể từ khi chuyển đổi java thực sự có thể sử dụng enums.Tối ưu hóa kết hợp mẫu Scala cho liệt kê Java với @switch

Nhưng trình biên dịch chỉ phàn nàn:

error: could not emit switch for @switch annotated match 
(args.tileType: @switch) match { 

nơi tiletype là lĩnh vực trong đó có chứa một trong các giá trị enum. Cách khắc phục mã có thể được tối ưu hóa?

Trả lời

2

Bạn sử dụng Java.

Scala chỉ chứa khoảng tối thiểu cần thiết để có thể đọc Java enums. Bạn không thể tạo hoặc tối ưu hóa chúng trong Scala hiện tại (thông qua 2.10).

+0

tốt, nếu điều này là một thực tế, tôi sẽ sử dụng Java nếu hiệu suất thực sự trở nên quan trọng – DerWaldschrat

+0

Bạn có thể tạo một bản đồ băm từ enums cho các chức năng và thực hiện chuyển đổi theo cách đó nếu danh sách được ridiculously dài. (Giả sử bạn có thể sắp xếp nó để bạn không phải xây dựng bản đồ mỗi lần.) –