Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何理解此代码段的错误消息?_Java_Eclipse_Mahout - Fatal编程技术网

Java 如何理解此代码段的错误消息?

Java 如何理解此代码段的错误消息?,java,eclipse,mahout,Java,Eclipse,Mahout,我需要用开源软件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 Ite

我需要用开源软件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
 }
}
import org.apache.mahout.cf.taste.common.refresh;
导入org.apache.mahout.cf.taste.impl.common.fastdset;
导入org.apache.mahout.cf.taste.similarity.ItemSimilarity;
公共类GenderItemSimilarity实现ItemSimilarity{
私人最终禁食者;
私人最终禁食妇女;
公共性别相似性(禁食男性、禁食女性){
这个男人=男人;
这个。女人=女人;
}
公共双项目相似性(长配置文件ID1、长配置文件ID2){
布尔profile1IsMan=isMan(profileID1);
if(profile1IsMan==null){
返回0.0;
}
布尔profile2IsMan=isMan(profileID2);
if(profile2IsMan==null){
返回0.0;
}
返回profile1IsMan==profile2IsMan?1.0:-1.0;
}
公共双[]项相似性(长项ID1,长[]项ID2s){
double[]结果=新的double[itemID2s.length];
对于(int i=0;i
eclipse编译器会给出错误消息,如

类型GenderItemSimilarity必须实现继承的抽象方法ItemSimilarity.AllSimilariItemId(长)


在我看来,这个错误消息表明存在一个类ItemSimilarity,它有一个allSimilarItemIDs(long)方法。但是,当前程序没有此方法。我的分析正确吗?添加这种方法可以解决问题吗?

您是正确的,
ItemSimilarity
类声明了一个名为
allSimilarItemIDs
的抽象方法。在实现此类时,必须在类中为该抽象方法定义一个方法体。

从错误消息中,我们可以理解ItemSimilarity接口有一个名为AllSimilaritemId(long)的方法,我们也需要处理该方法

仅出于测试目的,请通过添加简单的print语句来实现此方法。
如果它解决了这个问题,那么我们就可以很容易地理解问题所在。

这是《驯兽师在行动》一书中的一个片段。(我是一名作家。)我不认为这是本书附带的完整、最新的源代码。确保获取最新的,目前不是Manning,而是(并且将继续)存在的。

(或者将您的类抽象化,使其成为实现您的类的人的责任,但这可能不是您想要做的)。谢谢,Sean。是的,这是《行踪》中的代码。我正试图学习它,并开始在我的项目的基础上Mahout的工作。我将检查来自Github的最新代码。