При компиляции ошибка: uses or overrides a deprecated API

Ошибка:

Note: C:\My Projects\TAJ\qonun_FuzzySearch.TJ\app\src\main\java\qonun\FuzzyMatch.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Код:

import com.google.common.collect.Sets;
import com.google.common.collect.Sets.SetView;

import org.apache.commons.lang3.StringUtils;

import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class FuzzyMatch {

    /*
     * t0 = [SORTED_INTERSECTION]
     * t1 = [SORTED_INTERSECTION] + [SORTED_REST_OF_STRING1]
     * t2 = [SORTED_INTERSECTION] + [SORTED_REST_OF_STRING2]
     *
     * outcome = max(t0,t1,t2)
     *
     */
    public static int getRatio(String s1, String s2, boolean debug) {
        if (s1.length() >= s2.length()) {
            // We need to swap s1 and s2
            String temp = s2;
            s2 = s1;
            s1 = temp;
        }

        // Get alpha numeric characters
        s1 = escapeString(s1);
        s2 = escapeString(s2);

        s1 = s1.toLowerCase();
        s2 = s2.toLowerCase();

        Set<String> set1 = new HashSet<String>();
        Set<String> set2 = new HashSet<String>();

        //split the string by space and store words in sets
        StringTokenizer st1 = new StringTokenizer(s1);
        while (st1.hasMoreTokens()) {
            set1.add(st1.nextToken());
        }

        StringTokenizer st2 = new StringTokenizer(s2);
        while (st2.hasMoreTokens()) {
            set2.add(st2.nextToken());
        }

        SetView<String> intersection = Sets.intersection(set1, set2);

        TreeSet<String> sortedIntersection = Sets.newTreeSet(intersection);

        if (debug) {
            System.out.print("Sorted intersection --> ");
            for (String s:sortedIntersection)
                System.out.print(s + " ");
        }

        // Find out difference of sets set1 and intersection of set1,set2
        SetView<String> restOfSet1 = Sets.symmetricDifference(set1, intersection);

        // Sort it
        TreeSet<String> sortedRestOfSet1 = Sets.newTreeSet(restOfSet1);

        SetView<String> restOfSet2 = Sets.symmetricDifference(set2, intersection);
        TreeSet<String> sortedRestOfSet2 = Sets.newTreeSet(restOfSet2);

        if (debug) {
            System.out.print("\nSorted rest of 1 --> ");
            for (String s:sortedRestOfSet1)
                System.out.print(s + " ");

            System.out.print("\nSorted rest of 2 -->");
            for (String s:sortedRestOfSet2)
                System.out.print(s + " ");
        }

        String t0 = "";
        String t1 = "";
        String t2 = "";

        for (String s:sortedIntersection) {
            t0 = t0 + " " + s;
        }
        t0 = t0.trim();

        Set<String> setT1 = Sets.union(sortedIntersection, sortedRestOfSet1);
        for (String s:setT1) {
            t1 = t1 + " " + s;
        }
        t1 = t1.trim();

        Set<String> setT2 = Sets.union(intersection, sortedRestOfSet2);
        for (String s:setT2) {
            t2 = t2 + " " + s;
        }

        t2 = t2.trim();

        int amt1 = calculateLevensteinDistance(t0, t1);
        int amt2 = calculateLevensteinDistance(t0, t2);
        int amt3 = calculateLevensteinDistance(t1, t2);

        if (debug) {
            System.out.println();
            System.out.println("t0 = " + t0 + " --> " + amt1);
            System.out.println("t1 = " + t1 + " --> " + amt2);
            System.out.println("t2 = " + t2 + " --> " + amt3);
            System.out.println();
        }

        int finalScore = Math.max(Math.max(amt1, amt2), amt3);
        return finalScore;
    }

    public static int calculateLevensteinDistance(String s1, String s2) {
        int distance = StringUtils.getLevenshteinDistance(s1, s2);
        double ratio = ((double) distance) / (Math.max(s1.length(), s2.length()));
        return 100 - new Double(ratio*100).intValue();
    }

    public static String escapeString(String token) {

        StringBuffer s = new StringBuffer(token.length());

        CharacterIterator it = new StringCharacterIterator(token);
        for (char ch = it.first(); ch != CharacterIterator.DONE; ch = it.next()) {
            switch (ch) {
                // '-,)(!`\":/][?;~><
                case '\'':
                case '/':
                case '\\':
                case '-':
                case ',':
                case ')':
                case '(':
                case '!':
                case '`':
                case '\"':
                case ':':
                case ']':
                case '[':
                case '?':
                case ';':
                case '~':
                case '<':
                case '>':
                    s.append(" ");
                    break;
                default:
                    s.append(ch);
                    break;
            }
        }

        token = s.toString();
        return token;
    }

    public static void main(String[] args) {
        boolean debug = false;

    }
}

Ответы (1 шт):

Автор решения: Дмитрий

это не ошибка компиляции. это предупреждение компилятора о том, что вы используете методы, объявленные как Deprecated. ваш код в этом случае будет работать (в отличии от настоящих ошибок компиляции), однако использовать такие методы не рекомендуется (информацию о Deprecated без проблем можете найти в инете).

в данном конкретном случае это предупреждение касается вашего метода

public static int calculateLevensteinDistance(String s1, String s2) {
    int distance = StringUtils.getLevenshteinDistance(s1, s2);
    double ratio = ((double) distance) / (Math.max(s1.length(), s2.length()));
    return 100 - new Double(ratio * 100).intValue();
}

дело в том, что данный метод StringUtils.getLevenshteinDistance объявлен Deprecated. это видно в Deprecated-списке официальной документации

отсюда же следует, что вместо указанного метода следует использовать класс org.apache.commons.text.similarity.LevenshteinDistance , для этого нужно подключить эту зависимость

вот описание указанного класса в документации

→ Ссылка