2012-02-14 29 views
6

Tôi muốn sử dụng câu lệnh chuyển đổi như trong Java 1.7, cũng cho phép switch(someString). Tuy nhiên, nếu tôi thay đổi trình biên dịch java thành 1.7 thì dự án bị ngắt và tôi phải quay lại 1.5 hoặc sử dụng android tools-> fix project.Đổi câu lệnh bằng chuỗi làm đối số trong Android

Có cách nào để sử dụng chuyển đổi với Strings trong phát triển Android không?

+1

@Deepak Đó là trong Java7, do đó lý do cho câu hỏi này. –

+0

Câu trả lời được cung cấp trong liên kết này (http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java) cho bạn thấy làm thế nào để phần nào làm việc xung quanh chuyển đổi với giới hạn chuỗi trước khi java 7. Nếu bạn không muốn phương pháp này, bạn đang mắc kẹt với if/elses. – bsimic

+0

Bản sao có thể có của http://stackoverflow.com/questions/14367629/android-coding-with-switch-string/32225734#32225734 –

Trả lời

5

EDIT

Cá nhân, tôi đã không cố gắng, nhưng theo trang Android System Requirements, nó không được hỗ trợ. Điều đó nói rằng, nó không có nghĩa là nó sẽ không hoạt động, chỉ là bạn không có khả năng nhận được nhiều sự trợ giúp về chủ đề này từ Google/Android.

JDK 5 hoặc JDK 6 (JRE thôi là không đủ)

Trên một lưu ý khả năng tích cực, (tìm thấy với sự giúp đỡ của @Emil H và bình luận của mình) Tôi đã tìm thấy những bit thông tin trực tuyến:

Từ Dalvik on Wikipedia:

Chương Trình thường viết bằng một phương ngữ của Java và biên dịch để bytecode. Sau đó, họ được chuyển từ Java file .class Máy tương thích ảo để .dex Dalvik-tương thích (Dalvik Executable) file ...

Nếu bytecode không thay đổi từ phiên bản 6-7 (trừ thêm invokedynamic được đề cập bởi @David Schwartz, không nên sử dụng câu lệnh switch.), sau đó nó sẽ hoạt động ...

+0

Bạn có chắc chắn về điều này không. Tôi nghĩ rằng trình biên dịch dex làm việc với mã byte. Và như xa như tôi biết có java 7 không thêm bất cứ điều gì mới ở cấp mã byte ... Tôi có thể là sai ... –

+1

@EmilH Java 7 thêm ít nhất 'invokedynamic' vào mã byte Java cho mỗi [JSR292 ] (http://jcp.org/en/jsr/detail?id=292). –

+1

@David Scwartz Vâng, nhưng Java không sử dụng quyền đó? Nó chủ yếu là để tăng hỗ trợ cho các ngôn ngữ động trên jvm như Jython vv? –

1

Bạn sẽ có thể sử dụng JDK7 với Android. Kiểm tra câu trả lời này cho một câu hỏi liên quan:

https://stackoverflow.com/a/7481063/355499

EDIT:

thử nó ra cục bộ và tất cả mọi thứ hoạt động tốt với JDK7 (đó là những gì tôi sử dụng khi phát triển). Tuy nhiên, tôi không thể tìm thấy một cách để thay đổi mức độ tuân thủ từ 1,6 đến 1,7 trong dự án Android của tôi. Nếu bạn thực sự muốn làm điều này, tôi đoán bạn sẽ phải nghỉ mát để xây dựng dự án của bạn bằng một số phương tiện khác hơn là sử dụng Eclipse. Ví dụ bằng cách sử dụng một kịch bản kiến ​​hoặc tương tự. Có thể là một công việc nhiều hơn một chút so với nó là giá trị mặc dù.

0

Hiện tại không thể: mặc dù trong trình biên dịch Java 1.7, nó được giới thiệu chuyển đổi câu lệnh với chuỗi, tiếc là Android yêu cầu phiên bản 1.6 hoặc 1.5. Vì vậy, chúng ta phải chờ đợi.

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