SORU
22 AĞUSTOS 2011, PAZARTESİ


Java Android ile 7 dil özellikleri

Eğer herkes Android ile Java 7 yeni dil özelliklerini kullanmaya çalıştı mı? Android tükürür Java ve dex için döner bayt kodu okur biliyorum. Benim sorum Java 7 Java anlayabilirim? yani sanırım

CEVAP
25 Kasım 2012, Pazar


Java 7 küçük bir parçası kesinlikle (not: sadece test var 4.1 Android ile kullanılabilir.

Öncelikle, sadece derleyici 1.5 ve 1.6 Java it is hard-coded uyumlu olduğundan Eclipse ADT kullanılamadı. ADT yeniden derlemek olabilir ama bu yana birlikte tüm Android yeniden yapmak için basit bir yolu yoktur hiçbir buluyorum.

Ama Eclipse kullanmaya gerek yok. Örneğin, Android Studio 0.3.2, IntelliJ IDEA CE ve javac tabanlı diğer IDE Android için derleme destekler . ben^>ve8 Java için bile uygun ayarlayabilirsiniz:

  • Proje Yapı Öğelerini (2. bölmesi modülü seç) Word ekranında Modülleri ("7.0 - Elmas, KOL, çok yakalamak, vb.") seçin dosya seçeneğine Dil düzeyi seçeneğine

Enabling Java 7 on IntelliJ

Bu sadece Java 7 sağlardil özellikleripek iyileşme yarısı da kütüphaneden geldiğinden beri hiçbir şey yararlanabilir. Kullanabilirsin özellikleri kitaplığına bağımlı olanlar

  • Elmas operatörü (<>)
  • String anahtarı
  • Birden çok catch (catch (Exc1 | Exc2 e))
  • Dizi sabitleri (1_234_567) alt çizgi
  • İkili rakamları (0b1110111)

Ve bu özellikler kullanılamazhenüz:

  • Mevcut olmayan arayüz "java.gerektirdiğinden *4--*kaynakları deyimi — lang."(Bu halka 4.4) kullanılabilir . AutoCloseable
  • @SafeVarargs ek açıklama — "java.çünkü lang.SafeVarargs" yok

... "henüz" :) bu çıkıyor, ancak Android kütüphane hedefleme için 1.6, Android kaynak içermiyor arayüzleri AutoCloseable ve geleneksel arayüzleri gibi Closeable mu tat AutoCloseable (SafeVarargs gerçekten eksik olsa da). Yansıma yoluyla varlığını teyit edebiliriz. Sadece Javadoc "android.jar" onlara dahil değil. bu neden oldu @hide tag, çünkü gizli

Zaten varolan bir soru varHow do I build the Android SDK with hidden and internal APIs available?bu yöntemler geri almak için. Sadece gerekiyordeğiştirinmevcut "" bizim özel bir geçerli Platformun referans, Java 7 API birçok kullanılabilir (prosedürü Eclipse. buna benzer olacak android.jar Proje Öğelerini SDK Yapısını Kontrol Etmek.)

Ek, (sadece) aşağıdaki Java 7 AutoCloseablekütüphane bulunmaktadırayrıca ortaya çıkardı

  • Özel durum zincirleme ConcurrentModificationException, LinkageError ve AssertionError yapıcılar
  • Statik .() karşılaştırın ilkel yöntemleri: Boolean.() karşılaştırın, Bayt.() karşılaştırın, Kısa.() karşılaştırın, Karakter.() karşılaştırın, Tamsayı.() karşılaştırın, Uzun.() karşılaştırın.
  • Currency: .() getAvailableCurrencies, .() getDisplayName (amaolmadan.() getNumericCode)
  • BitSet: .() previousSetBit, .() previousClearBit, .() değerini, .() toLongArray, .() toByteArray
  • Collections: .() emptyEnumeration, .() emptyİterator, .() emptyListİterator
  • AutoCloseable
  • Throwable: .() addSuppressed, .() getSuppressed ve 4-argüman yapıcı
  • Character: .() karşılaştırın .() isSurrogate, .() getName, .() highSurrogate, .() lowSurrogate, .() isBmpCodePoint (amaolmadan.() isAlphabetic .() isİdeographic)
  • Sistem: .() lineSeparator (kaçak?)
  • java.lang.reflect.Modifier: .() classModifiers, .() constructorModifiers, .() fieldModifiers, .() interfaceModifiers, .() methodModifiers
  • NetworkInterface: .() getİndex, .() getByİndex
  • InetSocketAddress: .() getHostString
  • 21**: .() getLoopbackAddress
  • Logger: .() getGlobal
  • ConcurrentLinkedDeque
  • AbstractQueuedSynchronizer: .() hasQueuedPredecessors
  • DeflaterOutputStream: 3 kurucular"". syncFlush ile
  • Deflater: .NO_FLUSH, .SYNC_FLUSH, .FULL_FLUSH, .() deflate 4 bağımsız değişken

Temelde hepsi bu. Özellikle, NİO 2.0 yok ve Diziler.asList hala @SafeVarargs değildir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Le

    Anthony Le

    10 EKİM 2006
  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009
  • Utah Valley Online

    Utah Valley

    9 AĞUSTOS 2010