通过最小规范的反糖化可以使用 Java 11+ API

Android Studio 支持使用许多 Java 11+ API,而无需为您的应用指定最低 API 级别。这意味着,如果您使用的是 Android 13(API 级别 33)中引入的 API,该代码也适用于所有以前的版本。多年来添加到 Android 的大多数 API 都在 Android 13 上受支持。通过名为API 反糖化 的过程,DEX 编译器 (D8) 允许您在支持旧版 Android 的应用中包含更多标准语言 API。

Java 11 支持 API 反糖化有三种类型

  • 最小版本 仅包含 java.util.function 包以及一些在旧设备上存在已知问题的 Android 框架并发集合的替换类。
  • 默认版本 实际上是更新到 Java 11 的 Java 8 API 反糖化的升级版本。除了最小版本中的所有内容外,它还包含 java.timejava.util.stream 包。
  • nio 版本 除了默认版本中的所有内容外,还包含 java.nio 包。

下表显示了当您将最新版本的 Android Gradle 插件与 coreLibraryDesugaring 依赖项设置为 com.android.tools:desugar_jdk_libs_minimal:2.0.1 一起使用时可用的 Java 11+ 库(有关更多信息,请参阅API 反糖化)。在 build.gradlebuild.gradle.kts 文件中设置此属性。

包 +
类、
枚举、
或接口
构造函数、
属性、
和方法
注释
java.util.concurrent


 ConcurrentHashMap.
 KeySetView


  • public boolean add(Object e)
  • public boolean addAll(Collection c)
  • public boolean contains(Object o)
  • public boolean equals(Object o)
  • public void forEach(Consumer action)
  • public Object getMappedValue()
  • public int hashCode()
  • public Iterator iterator()
  • public boolean remove(Object o)
  • public Spliterator spliterator()

Android T 中存在的某些方法 (8) 不受支持。

java.util.concurrent


 ConcurrentHashMap


  • public ConcurrentHashMap()
  • public ConcurrentHashMap(int initialCapacity)
  • public ConcurrentHashMap(
     int initialCapacity, float loadFactor)
  • public ConcurrentHashMap(
      int initialCapacity,
      float loadFactor,
      int concurrencyLevel)
  • public ConcurrentHashMap(Map m)
  • public void clear()
  • public Object compute(
     Object key, BiFunction remappingFunction)
  • public Object computeIfAbsent(
     Object key, Function mappingFunction)
  • public Object computeIfPresent(
     Object key, BiFunction remappingFunction)
  • public boolean contains(Object value)
  • public boolean containsKey(Object key)
  • public boolean containsValue(Object value)
  • public Enumeration elements()
  • public Set entrySet()
  • public boolean equals(Object o)
  • public void forEach(
     long parallelismThreshold, BiConsumer action)
  • public void forEach(
      long parallelismThreshold,
      BiFunction transformer,
      Consumer action)
  • public void forEach(BiConsumer action)
  • public void forEachEntry(
     long parallelismThreshold, Consumer action)
  • public void forEachEntry(
      long parallelismThreshold,
      Function transformer,
      Consumer action)
  • public void forEachKey(
     long parallelismThreshold, Consumer action)
  • public void forEachKey(
      long parallelismThreshold,
      Function transformer,
      Consumer action)
  • public void forEachValue(
     long parallelismThreshold, Consumer action)
  • public void forEachValue(
      long parallelismThreshold,
      Function transformer,
      Consumer action)
  • public Object get(Object key)
  • public Object getOrDefault(
     Object key, Object defaultValue)
  • public int hashCode()
  • public boolean isEmpty()
  • public Set keySet()
  • public ConcurrentHashMap.KeySetView keySet(
     Object mappedValue)
  • public Enumeration keys()
  • public long mappingCount()
  • public Object merge(
      Object key,
      Object value,
      BiFunction remappingFunction)
  • public static ConcurrentHashMap.KeySetView newKeySet()
  • public static ConcurrentHashMap.KeySetView newKeySet(
     int initialCapacity)
  • public Object put(Object key, Object value)
  • public void putAll(Map m)
  • public Object putIfAbsent(Object key, Object value)
  • public Object reduce(
      long parallelismThreshold,
      BiFunction transformer,
      BiFunction reducer)
  • public Object reduceEntries(
      long parallelismThreshold,
      Function transformer,
      BiFunction reducer)
  • public Map.Entry reduceEntries(
     long parallelismThreshold, BiFunction reducer)
  • public double reduceEntriesToDouble(
      long parallelismThreshold,
      ToDoubleFunction transformer,
      double basis,
      DoubleBinaryOperator reducer)
  • public int reduceEntriesToInt(
      long parallelismThreshold,
    ToIntFunction 转换器,
    int 基数,
    IntBinaryOperator 归约器)
  • public long reduceEntriesToLong(
      long parallelismThreshold,
    ToLongFunction 转换器,
    long 基数,
    LongBinaryOperator 归约器)
  • public Object reduceKeys(
     long parallelismThreshold, BiFunction reducer)
  • public Object reduceKeys(
      long parallelismThreshold,
      Function transformer,
      BiFunction reducer)
  • public double reduceKeysToDouble(
      long parallelismThreshold,
      ToDoubleFunction transformer,
      double basis,
      DoubleBinaryOperator reducer)
  • public int reduceKeysToInt(
      long parallelismThreshold,
    ToIntFunction 转换器,
    int 基数,
    IntBinaryOperator 归约器)
  • public long reduceKeysToLong(
      long parallelismThreshold,
    ToLongFunction 转换器,
    long 基数,
    LongBinaryOperator 归约器)
  • public double reduceToDouble(
      long parallelismThreshold,
    ToDoubleBiFunction 转换器,
      double basis,
      DoubleBinaryOperator reducer)
  • public int reduceToInt(
      long parallelismThreshold,
    ToIntBiFunction 转换器,
    int 基数,
    IntBinaryOperator 归约器)
  • public long reduceToLong(
      long parallelismThreshold,
    ToLongBiFunction 转换器,
    long 基数,
    LongBinaryOperator 归约器)
  • public Object reduceValues(
     long parallelismThreshold, BiFunction reducer)
  • public Object reduceValues(
      long parallelismThreshold,
      Function transformer,
      BiFunction reducer)
  • public double reduceValuesToDouble(
      long parallelismThreshold,
      ToDoubleFunction transformer,
      double basis,
      DoubleBinaryOperator reducer)
  • public int reduceValuesToInt(
      long parallelismThreshold,
    ToIntFunction 转换器,
    int 基数,
    IntBinaryOperator 归约器)
  • public long reduceValuesToLong(
      long parallelismThreshold,
    ToLongFunction 转换器,
    long 基数,
    LongBinaryOperator 归约器)
  • public Object remove(Object 键)
  • public boolean remove(Object 键, Object 值)
  • public Object replace(Object 键, Object 值)
  • public boolean replace(
    Object 键, Object 旧值, Object 新值)
  • public void replaceAll(BiFunction 函数)
  • public Object search(
      long parallelismThreshold,
    BiFunction 搜索函数)
  • public Object searchEntries(
      long parallelismThreshold,
    Function 搜索函数)
  • public Object searchKeys(
      long parallelismThreshold,
    Function 搜索函数)
  • public Object searchValues(
      long parallelismThreshold,
    Function 搜索函数)
  • public int size()
  • public String toString()
  • public Collection values()

已完全实现的类。
 

java.util.concurrent


ThreadLocalRandom


  • public static ThreadLocalRandom current()
  • public DoubleStream doubles()
  • public DoubleStream doubles(
    double 随机数起始值,
    double 随机数边界)
  • public DoubleStream doubles(long 流大小)
  • public DoubleStream doubles(
    long 流大小,
    double 随机数起始值,
    double 随机数边界)
  • public IntStream ints()
  • public IntStream ints(
    int 随机数起始值, int 随机数边界)
  • public IntStream ints(long 流大小)
  • public IntStream ints(
    long 流大小,
    int 随机数起始值,
    int 随机数边界)
  • public LongStream longs()
  • public LongStream longs(long 流大小)
  • public LongStream longs(
    long 随机数起始值, long 随机数边界)
  • public LongStream longs(
    long 流大小,
    long 随机数起始值,
    long 随机数边界)
  • protected int next(int 位数)
  • public boolean nextBoolean()
  • public double nextDouble()
  • public double nextDouble(double 边界)
  • public double nextDouble(
    double 起始值, double 边界)
  • public float nextFloat()
  • public double nextGaussian()
  • public int nextInt()
  • public int nextInt(int 边界)
  • public int nextInt(int 起始值, int 边界)
  • public long nextLong()
  • public long nextLong(long 边界)
  • public long nextLong(long 起始值, long 边界)
  • public void setSeed(long 种子)

已完全实现的类。
 

java.util.function


BiConsumer


  • public abstract void accept(Object p0, Object p1)
  • public BiConsumer andThen(BiConsumer after)

已完全实现的类。
 

java.util.function


BiFunction


  • public BiFunction andThen(Function after)
  • public abstract Object apply(Object p0, Object p1)

已完全实现的类。
 

java.util.function


BiPredicate


  • public BiPredicate and(BiPredicate other)
  • public BiPredicate negate()
  • public BiPredicate or(BiPredicate other)
  • public abstract boolean test(Object p0, Object p1)

已完全实现的类。
 

java.util.function


BinaryOperator


  • public static BinaryOperator maxBy(
    Comparator comparator)
  • public static BinaryOperator minBy(
    Comparator comparator)

已完全实现的类。
 

java.util.function


BooleanSupplier


  • public abstract boolean getAsBoolean()

已完全实现的类。
 

java.util.function


Consumer


  • public abstract void accept(Object p0)
  • public Consumer andThen(Consumer after)

已完全实现的类。
 

java.util.function


DoubleBinaryOperator


  • public abstract double applyAsDouble(
    double p0, double p1)

已完全实现的类。
 

java.util.function


DoubleConsumer


  • public abstract void accept(double p0)
  • public DoubleConsumer andThen(DoubleConsumer after)

已完全实现的类。
 

java.util.function


DoubleFunction


  • public abstract Object apply(double p0)

已完全实现的类。
 

java.util.function


DoublePredicate


  • public DoublePredicate and(DoublePredicate other)
  • public DoublePredicate negate()
  • public DoublePredicate or(DoublePredicate other)
  • public abstract boolean test(double p0)

已完全实现的类。
 

java.util.function


DoubleSupplier


  • public abstract double getAsDouble()

已完全实现的类。
 

java.util.function


DoubleToIntFunction


  • public abstract int applyAsInt(double p0)

已完全实现的类。
 

java.util.function


DoubleToLongFunction


  • public abstract long applyAsLong(double p0)

已完全实现的类。
 

java.util.function


DoubleUnaryOperator


  • public DoubleUnaryOperator andThen(
    DoubleUnaryOperator after)
  • public abstract double applyAsDouble(double p0)
  • public DoubleUnaryOperator compose(
    DoubleUnaryOperator before)
  • public static DoubleUnaryOperator identity()

已完全实现的类。
 

java.util.function


Function


  • public Function andThen(Function after)
  • public abstract Object apply(Object p0)
  • public Function compose(Function before)
  • public static Function identity()

已完全实现的类。
 

java.util.function


IntBinaryOperator


  • public abstract int applyAsInt(int p0, int p1)

已完全实现的类。
 

java.util.function


IntConsumer


  • public abstract void accept(int p0)
  • public IntConsumer andThen(IntConsumer after)

已完全实现的类。
 

java.util.function


IntFunction


  • public abstract Object apply(int p0)

已完全实现的类。
 

java.util.function


IntPredicate


  • public IntPredicate and(IntPredicate other)
  • public IntPredicate negate()
  • public IntPredicate or(IntPredicate other)
  • public abstract boolean test(int p0)

已完全实现的类。
 

java.util.function


IntSupplier


  • public abstract int getAsInt()

已完全实现的类。
 

java.util.function


IntToDoubleFunction


  • public abstract double applyAsDouble(int p0)

已完全实现的类。
 

java.util.function


IntToLongFunction


  • public abstract long applyAsLong(int p0)

已完全实现的类。
 

java.util.function


IntUnaryOperator


  • public IntUnaryOperator andThen(
    IntUnaryOperator after)
  • public abstract int applyAsInt(int p0)
  • public IntUnaryOperator compose(
    IntUnaryOperator before)
  • public static IntUnaryOperator identity()

已完全实现的类。
 

java.util.function


LongBinaryOperator


  • public abstract long applyAsLong(long p0, long p1)

已完全实现的类。
 

java.util.function


LongConsumer


  • public abstract void accept(long p0)
  • public LongConsumer andThen(LongConsumer after)

已完全实现的类。
 

java.util.function


LongFunction


  • public abstract Object apply(long p0)

已完全实现的类。
 

java.util.function


LongPredicate


  • public LongPredicate and(LongPredicate other)
  • public LongPredicate negate()
  • public LongPredicate or(LongPredicate other)
  • public abstract boolean test(long p0)

已完全实现的类。
 

java.util.function


LongSupplier


  • public abstract long getAsLong()

已完全实现的类。
 

java.util.function


LongToDoubleFunction


  • public abstract double applyAsDouble(long p0)

已完全实现的类。
 

java.util.function


LongToIntFunction


  • public abstract int applyAsInt(long p0)

已完全实现的类。
 

java.util.function


LongUnaryOperator


  • public LongUnaryOperator andThen(
    LongUnaryOperator after)
  • public abstract long applyAsLong(long p0)
  • public LongUnaryOperator compose(
    LongUnaryOperator before)
  • public static LongUnaryOperator identity()

已完全实现的类。
 

java.util.function


ObjDoubleConsumer


  • public abstract void accept(Object p0, double p1)

已完全实现的类。
 

java.util.function


ObjIntConsumer


  • public abstract void accept(Object p0, int p1)

已完全实现的类。
 

java.util.function


ObjLongConsumer


  • public abstract void accept(Object p0, long p1)

已完全实现的类。
 

java.util.function


Predicate


  • public Predicate and(Predicate other)
  • public static Predicate isEqual(Object targetRef)
  • public Predicate negate()
  • public static Predicate not(Predicate target)
  • public Predicate or(Predicate other)
  • public abstract boolean test(Object p0)

已完全实现的类。
 

java.util.function


Supplier


  • public abstract Object get()

已完全实现的类。
 

java.util.function


ToDoubleBiFunction


  • public abstract double applyAsDouble(
    Object p0, Object p1)

已完全实现的类。
 

java.util.function


ToDoubleFunction


  • public abstract double applyAsDouble(Object p0)

已完全实现的类。
 

java.util.function


ToIntBiFunction


  • public abstract int applyAsInt(Object p0, Object p1)

已完全实现的类。
 

java.util.function


ToIntFunction


  • public abstract int applyAsInt(Object p0)

已完全实现的类。
 

java.util.function


ToLongBiFunction


  • public abstract long applyAsLong(
    Object p0, Object p1)

已完全实现的类。
 

java.util.function


ToLongFunction


  • public abstract long applyAsLong(Object p0)

已完全实现的类。
 

java.util.function


UnaryOperator


  • public static UnaryOperator identity()

已完全实现的类。