Как понять сообщение об ошибке для этого фрагмента кода? - PullRequest
0 голосов
/ 02 августа 2011

Мне нужно работать над проектом с использованием программного обеспечения с открытым исходным кодом, mahout.Пример программы следующий:

import org.apache.mahout.cf.taste.common.Refreshable;
import org.apache.mahout.cf.taste.impl.common.FastIDSet;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;
public class GenderItemSimilarity implements ItemSimilarity {

   private final FastIDSet men;
   private final FastIDSet women;
   public GenderItemSimilarity(FastIDSet men, FastIDSet women) {
       this.men = men;
       this.women = women;
   }

   public double itemSimilarity(long profileID1, long profileID2) {
      Boolean profile1IsMan = isMan(profileID1);
      if (profile1IsMan == null) {
      return 0.0;
   }
   Boolean profile2IsMan = isMan(profileID2);
      if (profile2IsMan == null) {
        return 0.0;
      }
   return profile1IsMan == profile2IsMan ? 1.0 : -1.0;
   }

 public double[] itemSimilarities(long itemID1, long[] itemID2s) {
    double[] result = new double[itemID2s.length];
    for (int i = 0; i < itemID2s.length; i++) {
     result[i] = itemSimilarity(itemID1, itemID2s[i]);
    }
   return result;
 }

private Boolean isMan(long profileID) {
  if (men.contains(profileID)) {
  return Boolean.TRUE;
 }
if (women.contains(profileID)) {
    return Boolean.FALSE;
  }
   return null;
}

public void refresh(Collection<Refreshable> alreadyRefreshed) {
  // do nothing
 }
}

Компилятор eclipse выдает сообщение об ошибке, например

Тип GenderItemSimility должен реализовывать унаследованный абстрактный метод ItemSdentifity.allS SimilarItemIDs (long)

Мне кажется, что это сообщение об ошибке указывает, что существует класс ItemSdentifity, который имеет метод allS SimilarItemIDs (long).Однако текущая программа не имеет этого метода.Мой анализ правильный?Решит ли этот метод добавление?

Ответы [ 3 ]

1 голос
/ 02 августа 2011

Вы правы, класс ItemSimilarity объявляет абстрактный метод с именем allSimilarItemIDs.При реализации этого класса вы должны определить тело метода для этого абстрактного метода в вашем классе.

0 голосов
/ 02 августа 2011

Это фрагмент из книги Махут в действии.(Я автор.) Я не думаю, что это полный, последний исходный код, который сопровождает книгу.Убедитесь, что вы получили последнюю версию, которая на данный момент не у Мэннинга, а живет (и будет жить) на Github .

0 голосов
/ 02 августа 2011

Из сообщения об ошибке мы можем понять, что в интерфейсе ItemS Similarity есть метод allS SimilarItemIDs (long), который нам также необходимо обработать.

Только для целей тестирования, один раз внедрите этот метод, добавив простую инструкцию print. Если это решит проблему, то мы легко поймем, в чем проблема ..

...