2012-02-14 34 views
6

Java 1.7のswitch文を使用したいと思います。switch(someString)も可能です。しかし、私はJavaコンパイラを1.7に変更するとプロジェクトが中断し、1.5に戻るかandroid tools-> fix projectを使用する必要があります。Androidの引数として文字列を使用したswitch文

アンドロイド開発で文字列にスイッチを使用する方法はありますか?

+1

@DeepakこれはJava7にあるため、この質問の理由です。 –

+0

このリンク(http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java)で提供されている答えは、Java 7の前に文字列制限付きでスイッチを多少回避する方法を示しています。このアプローチを望んでいない、あなたはif/elsesに悩まされています。 – bsimic

+0

可能な複製http://stackoverflow.com/questions/14367629/android-coding-with-switch-string/32225734#32225734 –

答えて

5

EDIT

は個人的に、私は試していないが、Android System Requirementsページによると、それがサポートされていません。それは、それがうまくいかないことを意味するものではなく、あなたがGoogle/Androidからの主題に関する多くの助けを受けることはまずありません。

JDK 5またはJDK 6が

潜在的に正のノートで(JREだけでは十分ではありません)、私はこれらの情報ビットを発見した(@Emil Hと彼のコメントの助けを借りています)オンライン:Dalvik on Wikipediaから

プログラムは、通常のJavaの方言で書かれ、バイトコードにコンパイルされています。バイトコードは7にバージョン6から変更されない場合、それらは追加invokedynamic除く(...のDalvik互換.dex(のDalvik実行可能)ファイルにJava仮想マシンと互換性の.classファイルから

を変換され、 @David Schwartzが言っているように、switchステートメントは使用しないでください)、それはうまくいくはずです。

+0

これは本当ですか?私はデックスコンパイラがバイトコードで動作すると思った。そして、私が知る限り、Java 7はバイトコードレベルで新しいものを追加しません...私は間違っている可能性があります... –

+1

@EmilH Java 7は、Javaバイトコードに少なくとも「invokedynamic」を追加します[JSR292 ](http://jcp.org/ja/jsr/detail?id=292)。 –

+1

@David Scwartzええ、Javaはその権利を使用していませんか?主にJythonなどのjvmで動的言語のサポートを増やすことですか? –

1

アンドロイドでJDK7を使用できるはずです。関連する質問にこの答えをチェックしてください:

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

EDIT:

がローカルにそれを試してみたし、すべてが(それが開発するときに、私が使用しているものだ)JDK7で正常に動作します。しかし、私はアンドロイドプロジェクトでコンプライアンスレベルを1.6から1.7に変更する方法を見つけることができません。本当にこれをやりたいのであれば、Eclipseを使う以外の方法でプロジェクトを構築する必要があると思います。たとえば、antスクリプトなどを使用します。しかし、それは価値があるよりも少し仕事があるかもしれません。

0

は今のところそれは可能ではありません: のJava 1.7コンパイラでは、それは文字列でスイッチ文を導入したが、残念ながらAndroidのは、バージョン1.6または1.5が必要です。 だから私たちは待たなければなりません。

関連する問題