0

O'Reilly の著書Hadoop: The Definitive Guide (Tom White 著、第 3 版) の Java コードの例と、それを再現/理解するための私自身の試みを比較しています。私が抱えている問題は次のとおりです。

本のクラスは問題なくコンパイルされます。

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class MaxTemperatureReducer
  extends Reducer<Text, IntWritable, Text, IntWritable> {

  @Override
  public void reduce(Text key, Iterable<IntWritable> values,
      Context context)
      throws IOException, InterruptedException {

    int maxValue = Integer.MIN_VALUE;
    for (IntWritable value : values) {
      maxValue = Math.max(maxValue, value.get());
    }
    context.write(key, new IntWritable(maxValue));
  }
}

しかし、その一部を自分でテストしようとすると、「int を逆参照できません:」というコンパイル エラーが発生します。

public class TestMinValue {
    public static void main(String[] args){
        int[] values = {1,2,3,4,5};
        int maxValue = Integer.MIN_VALUE;
        for(int value : values){
            maxValue = Math.max(maxValue, value.get());
}
}
}

私はJavaが初めてで、違いを理解したいと思っています。サンプルクラスはなぜ機能するのに、私のスニペットは機能しないのですか?

4

1 に答える 1

0

タイプは、メソッドIntWritableを持つクラスです。代わりget()にプリミティブ型を使用しています。intプリミティブにはJavaのメソッドがありません。

于 2012-12-13T21:51:38.223 に答える