public class MinimumEditDistance {
public interface CostFunction{
public int cost(int[][] distanceMatrix,CharSequence x, CharSequence y,int i,int j);
}
public static final CostFunction ONE = new CostFunction() {
public int cost(int[][] distanceMatrix, CharSequence x, CharSequence y, int i, int j) {
return 1;
}
};
public static final CostFunction TWO = new CostFunction() {
public int cost(int[][] distanceMatrix, CharSequence x, CharSequence y, int i, int j) {
return 2;
}
};
Я не могу понять, что на самом деле сделано в этом коде !!! Что делает new
перед CostFunction()
. Вообще-то, я совершенно испорчен в понимании этого!Интерфейсы и их использование
«Это просто анонимная реализация интерфейса CostFunction». Что это значит iozee? означает то, что ОДИН и ДВА в этом коде - переменные, объекты что? И если это экземпляры двух разных классов, то что означает «public static final CostFunction ONE»? Это экземпляр функции CostFunction, потому что это невозможно, не так ли? – agarwav
@ user1468694 Это похоже на объявление класса CostFunctionImpl, который реализует интерфейс CostFunction, а затем присваивает ** new CostFunctionImpl() ** в ONE, то же самое с TWO, но, например, будет экземпляр CostFunctionImpl2. – iozee
@ user1468694 public static final CostFunction ONE означает, что ONE является * типа * CostFunction. Когда вы реализуете интерфейс класса, его экземпляры также имеют тип CostFunction, в дополнение к типу класса. Я имею в виду, что в этом контексте нас не интересует класс объекта, связанного с ONE, но какой он тип. – iozee