2014-10-03 133 views
3

我想知道如果我可以在Android開發接口中使用默認方法。 該功能包含在Java 8中,但我發現Android Java VM尚不支持它。 有沒有辦法在Android開發中使用默認方法?如果沒有,當這個功能可用時,這個功能是否有某種時間軸?當在Android中支持默認方法(Java 8)?

+2

'Android Java VM還不支持它。這個陳述本身回答你的問題。它說**沒有**。 – 2014-10-03 07:27:28

+0

@ FrankN.Stein我還試圖瞭解這些是否是這些功能的一些時間表。我已經完善了這個問題。 – 2014-10-03 09:03:08

+0

同樣,答案似乎是**否**。 – 2014-10-03 09:05:09

回答

6

關於可用性:我想我們會在Android N中看到默認方法。在AOSP上已經有很多與新的Jack編譯器的默認方法相關的測試。請參閱http://bit.ly/1PZoV1A

而今天java.util.function包已合併到ojluni master(包括默認方法和lambda表達式的使用)。

編輯:這是Android N將支持Java 8的官方確認:http://developer.android.com/preview/j8-jack.html 流仍然丟失,但java.util.Spliterator(s)已於昨天被整合。鑑於目前的速度,我預計我們會在五月份看到Stream API。

+1

剛剛合併了java.util.stream包。 – 2016-03-18 13:13:23

2

可能重複:will android java support lambda expression in java 8?

在可能重複的問題,kapep回答了這個(閱讀更多詳細信息的完整答案):

Android不使用Oracle的Java SE版本,它基於Apache Harmony項目的一部分,所以它甚至不支持Java 7. Harmony不再支持並且不支持1.7。

因此,我認爲您可以忘記Oracle Java版本的Android開發新功能,並遵循Android API(不是Oracle版本)。

+2

Android支持API級別19中的Java 7.請參閱[這裏](http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7)。 – 2014-10-03 07:55:34

+0

請閱讀完整的答案(正如我寫的)來理解我自己的答案。 – mithrop 2014-10-03 08:22:12