यदि आप एंड्रॉइड स्टूडियो का उपयोग कर रहे हैं , तो जावा 7 भाषा को बिना किसी पैच के अपने आप सक्षम होना चाहिए। कोशिश के साथ संसाधन के लिए एपीआई स्तर 19+ की आवश्यकता होती है, और एनआईओ 2.0 सामान गायब हैं।
यदि आप Java 7 सुविधाओं का उपयोग नहीं कर सकते हैं, तो अपने संपादन को कैसे संपादित करें, इस पर @ नूनो का उत्तर देखेंbuild.gradle
।
निम्नलिखित केवल ऐतिहासिक हित के लिए है।
जावा 7 का एक छोटा हिस्सा निश्चित रूप से एंड्रॉइड के साथ उपयोग किया जा सकता है (ध्यान दें: मैंने केवल 4.1 पर परीक्षण किया है)।
सबसे पहले, आप ग्रहण के एडीटी का उपयोग नहीं कर सकते क्योंकि यह हार्ड-कोडेड है कि केवल जावा कंपाइलर 1.5 और 1.6 कंपाउंडेंट हैं। आप ADT को फिर से जोड़ सकते हैं, लेकिन मुझे लगता है कि ऐसा करने का कोई सरल तरीका नहीं है कि एक साथ पूरे एंड्रॉइड को एक साथ फिर से स्थापित करने से अलग किया जाए।
लेकिन आपको ग्रहण का उपयोग करने की आवश्यकता नहीं है। उदाहरण के लिए, Android Studio 0.3.2 , IntelliJ IDEA CE और अन्य javac- आधारित IDEs Android को संकलित करने का समर्थन करता है और आप इसके साथ Java 8 तक का अनुपालन भी सेट कर सकते हैं:
- फ़ाइल → प्रोजेक्ट संरचना → मॉड्यूल → (2 फलक पर मॉड्यूल उठाओ) → भाषा का स्तर → ("7.0 - हीरे, एआरएम, बहु-पकड़, आदि" चुनें)
यह केवल जावा 7 भाषा सुविधाओं की अनुमति देता है , और आप कुछ भी से शायद ही लाभ उठा सकते हैं क्योंकि सुधार भी पुस्तकालय से आता है। आपके द्वारा उपयोग की जा सकने वाली विशेषताएँ वे हैं जो लाइब्रेरी पर निर्भर नहीं करती हैं:
- हीरा ऑपरेटर (
<>
)
- स्ट्रिंग स्विच
- एकाधिक-पकड़ (
catch (Exc1 | Exc2 e)
)
- संख्याओं में अंडरस्कोर (
1_234_567
)
- द्विआधारी शाब्दिक (
0b1110111
)
और इन सुविधाओं का उपयोग अभी तक नहीं किया जा सकता है :
try
-साथ-संसाधनों बयान - क्योंकि यह गैर मौजूदा इंटरफेस "java.lang.AutoCloseable" की आवश्यकता है (इस 4.4+ में सार्वजनिक रूप से इस्तेमाल किया जा सकता)
- @SafeVarargs एनोटेशन - क्योंकि "java.lang.SafeVarargs" मौजूद नहीं है
... "अभी तक" :) यह पता चला है कि, हालांकि एंड्रॉयड के पुस्तकालय 1.6 के लिए लक्षित कर रहा है, एंड्रॉयड स्रोत की तरह इंटरफेस शामिल करता है AutoCloseable और पारंपरिक इंटरफेस की तरह closeable AutoCloseable से विरासत करता है (SafeVarargs वास्तव में याद आ रही है, हालांकि)। हम प्रतिबिंब के माध्यम से इसके अस्तित्व की पुष्टि कर सकते हैं। वे केवल इसलिए छिपे हुए हैं क्योंकि जावदोक में @hide
टैग है, जो "android.jar" को उन्हें शामिल नहीं करने का कारण बना।
पहले से ही मौजूदा प्रश्न के रूप में है कि मैं छिपे हुए और आंतरिक एपीआई के साथ एंड्रॉइड एसडीके कैसे बनाऊं? कैसे उन तरीकों को वापस पाने के लिए। आपको बस प्रतिस्थापित करने की आवश्यकता है हमारे अनुकूलित एक के साथ मौजूदा प्लेटफ़ॉर्म के मौजूदा "android.jar" संदर्भ की , फिर जावा 7 एपीआई के कई उपलब्ध हो जाएंगे (यह प्रक्रिया ग्रहण के समान है। परियोजना संरचना की जांच करें → एसडीके।)
AutoCloseable के अतिरिक्त, (केवल) निम्नलिखित जावा 7 लाइब्रेरी सुविधाएँ भी सामने आई हैं:
- कॉन्ट्रासेन्ट मैडिफिकेशन एक्ससेप्शन, लिंकेजएयर और एश्योरियन एरर में एक्सेप्शन चाइनिंग कंस्ट्रक्टर्स
- आदिम के लिए स्थिर .compare () विधियाँ: Boolean.compare (), Byte.compare (), Short.compare (), Character.compare (), Integer.compare (), Long.compare ()।
- मुद्रा : .getAvailableCurrencies (), .getDisplayName () (लेकिन बिना .getNumericCode () के)
- BitSet : .prepretSetBit (), .prepretClearBit (), .valueOO (), .toLongArray (), .toByteArray ()
- संग्रह : .emptyEnumeration (), .emptyIterator (), .emptyListIterator ()
- AutoCloseable
- फेंकने योग्य : .adduppressed (), .getSuppressed (), और 4-तर्क निर्माता
- चरित्र : .compare (), .isSurrogate (), .getName (), .highSurrogate (), .lowSurrogate (), .isBmpCodePoint () (लेकिन बिना .isAlphabetic () और .isIdeographic ()) के।
- सिस्टम: .lineSeparator ()
- java.lang.reflect.Modifier : .classModifiers (), .constructorModifiers (), (.fieldModifiers) (), .interfaceModifiers (), .methodModifiers ()।
- NetworkInterface : .getIndex (), .getByIndex ()
- InetSocketAddress : .getHostString ()
- InetAddress : .getLoopbackAddress ()
- लकड़हारा : .getGlobal ()
- ConcurrentLinkedDeque
- AbstractQueuedSynchronizer : .QQueduedPredwardors ()
- DeflaterOutputStream : "syncFlush" के साथ 3 कंस्ट्रक्टर्स।
- Deflater : .NO_FLUSH, .SYNC_FLUSH, .FULL_FLUSH, .deflate (4 तर्क के साथ)
यह मूल रूप से सभी है। विशेष रूप से, NIO 2.0 मौजूद नहीं है, और Arrays.asList अभी भी @SafeVarargs नहीं है।