#java #deprecated #deprecation-warning
#java #устаревший #устаревание-предупреждение
Вопрос:
Когда я сделал jdprscn для своего java-проекта, я обнаружил следующее предупреждающее сообщение:
class com/mes/mvc/mes/ApiLogRecord uses deprecated method java/math/BigDecimal::divide(Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;
команда, используемая для сканирования jdprscan:
/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/bin/jdeprscan --class-path `mvn -f pom.xml -q exec:exec -Dexec.executable=echo -Dexec.args="%classpath"` target/classes > ~/Downloads/bpDeps.txt
фактический метод, из-за которого возникает эта ошибка, является :
/**
* Convert duration milliseconds to seconds suitable for displaying.
*
* 246 milliseconds -> '0.246 secs'
*/
public String getDurationForDisplay() {
BigDecimal duration = new BigDecimal("" requestDuration).setScale(3);
duration = duration.divide(new BigDecimal("1000"), BigDecimal.ROUND_HALF_UP);
return "" duration " secs";
}
Я должен исправить эту проблему, любой здесь может подсказать мне.
Комментарии:
1. Прочитайте документацию , то есть javadoc
BigDecimal.divide(BigDecimal divisor, int roundingMode)
, в которой говорится: » Устарел. Методdivide(BigDecimal, RoundingMode)
следует использовать предпочтительнее этого устаревшего метода.»2. Итак, замените
BigDecimal.ROUND_HALF_UP
наRoundingMode.HALF_UP
.3. общедоступная строка getDurationForDisplay() { длительность BigDecimal = новая BigDecimal(«» requestDuration).setScale(3); длительность = duration.divide(BigDecimal.valueOf(1000), режим округления.HALF_UP); возвращает «» длительность «секунды»; } . Я думаю, что таким образом правильно??
Ответ №1:
Согласно документации: https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html#divide-java.math.BigDecimal-int-
Устаревший. Метод divide(BigDecimal, RoundingMode) следует использовать предпочтительнее, чем этот устаревший метод.