класс com /mes /mvc /mes /ApiLogRecord использует устаревший метод java /math /BigDecimal::divide(Ljava/math/BigDecimal; I)Ljava /math /BigDecimal;

#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) следует использовать предпочтительнее, чем этот устаревший метод.