2012-02-14 11 views
6

argüman olarak dize ile geçiş bildirimi Ayrıca Java 1.7 de olduğu gibi bir anahtar deyimi kullanmak istiyorum switch(someString) izin verir. Ancak, java derleyicisini proje kesmelerini 1.7 olarak değiştirirsem ya da 1.5'e geri dönmek zorundayım ya da android tools-> fix project'u kullanıyorum.Android

Android geliştirmede Strings ile anahtar kullanmanın herhangi bir yolu var mı?

+1

@Deepak Java7'de, bu sorunun nedeni budur. –

+0

Bu bağlantıda verilen yanıt (http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java), java 7'den önceki dizge kısıtlaması ile anahtarın etrafında nasıl çalışacağınızı gösterir. Bu yaklaşımı istemiyorsan, eğer/elses ile sıkışmışsın. – bsimic

+0

http://stackoverflow.com/questions/14367629/android-coding-with-switch-string/32225734#32225734 –

cevap

5

DÜZENLEME Şahsen

, ben denemedim ama Android System Requirements sayfaya göre, bu desteklenmiyor. Bu, işe yaramayacağı anlamına gelmez, sadece Google/Android'den konuyla ilgili çok fazla yardım almanız mümkün değildir.

JDK 5 veya JDK 6

potansiyel olumlu not (JRE tek başına yeterli değildir), ben bu bilgi biraz bulduk (@Emil H ve onun comment yardımıyla bulundu) Online:

Dalvik on Wikipedia Gönderen:

Programları yaygın Java bir lehçesi ile yazılmış ve baytkoduna derlenmektedir. Sonra

baytkodu 7'ye sürüm 6 dan değişmezse

(hariç ... Dalvik uyumlu .dex (Dalvik yürütülebilir) dosyaları için Java Virtual Machine uyumlu .class dosyalarından dönüştürülür invokedynamic eklendi @David Schwartz tarafından belirtilen, switch ifadeleri kullanılmamalıdır.), o zaman işe yaramalıdır ...

+0

Muhtemel kopyası Bu konuda emin misiniz? Dex derleyicisinin bayt koduyla çalıştığını düşündüm. Ve bildiğim kadarıyla java 7, bayt kod düzeyinde yeni bir şey eklemiyor ... Ben yanlış olabilirim ... –

+1

@EmilH Java 7, [JSR292] başına Java byte koduna en az "invokedynamic" ekler ] (http://jcp.org/en/jsr/detail?id=292). –

+1

@David Scwartz Evet, ama Java bu hakkını kullanmıyor mu? JVD gibi Jython vb. Dinamik dillerin desteğini arttırmak mı? –

1

Android ile JDK7'yi kullanabilmeniz gerekir. İlgili bir soruya bu cevabı kontrol edin:

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

DÜZENLEME:

yerel olarak dışarı çalıştı ve her şeyi (o geliştirirken ne kullanın) JDK7 ile çalışıyor. Ancak, android projemde uyumluluk seviyesini 1.6'dan 1.7'ye değiştirmenin bir yolunu bulamıyorum. Bunu gerçekten yapmak istiyorsan, projeni Eclipse'i kullanmaktan başka bir yolla inşa etmek zorunda kalacaksın sanırım. Örneğin bir karınca veya benzer bir komut kullanarak. Yine de değerinden biraz daha fazla iş olabilir.

0

Şimdilik hiçbir mümkündür: Java 1.7 derleyicisi String ile anahtarı deyimi tanıtıldı rağmen maalesef Android sürüm 1.6 veya 1.5 gerektirir. Yani beklemek zorundayız.