what ‘ sthemostidiomaticwayinjavatoverifythatacastfromlongtointdidnotloseanyinformation?
thisismycurrentimplementation :
publicstaticintsafelongtoint{
intI=(int ) l;
if () long ) I!=L}{
thrownewillegalargumentexception (l ‘ cannotbecasttointwithoutchangingitsvalue.’;
}
返回I;
}
anewmethodhasbeenaddedwithjava8todojustthat。
importstaticjava.lang.math.tointexact;
long foo=10L;
intbar=tointexact(foo );
willthrowanarithmeticexceptionincaseofoverflow。
severalotheroverflowsafemethodshavebeenaddedtojava8. theyendwithexact。
Examples:
math.incrementexact(long ) )。
math.subtractexact(long,long ) )。
math.decrementexact(long ) )。
math.negateexact(long )、
math.subtractexact(int,int ) )。