Math.toIntExact方法在我的Android6.0模拟器上抛出了一个异常。(较新的仿真器版本也可以)
This Microsoft doc是我找到的唯一关于它的文档。我认为Math.toIntExact在Android9.0之前是不是不兼容?
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dmurphy.remotescrumpoker, PID: 9527
java.lang.NoSuchMethodError: No static method toIntExact(J)I in class Ljava/lang/Math; or its super classes (declaration of 'java.lang.Math' appears in /system/framework/core-libart.jar)
at com.dmurphy.remotescrumpoker.Activity_TeamDetails$6.onComplete(Activity_TeamDetails.java:268)
at com.google.android.gms.tasks.zzj.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
D/FA: Event not sent since app measurement is disabled发布于 2020-02-01 17:57:38
根据文档,Math::toIntExact是在API level 24中引入的,也就是Android7.0。所以没错,它在Android 6上是不可用的。
好消息是,您可以通过从java.lang.Math source code中提取它来轻松地自己实现它。
public static int toIntExact(long value) {
if ((int)value != value) {
throw new ArithmeticException("integer overflow");
}
return (int)value;
}https://stackoverflow.com/questions/60015731
复制相似问题