0

这是java代码中的类定义:

public class WordCount {

 public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String line = value.toString();
        StringTokenizer tokenizer = new StringTokenizer(line);
        while (tokenizer.hasMoreTokens()) {
            word.set(tokenizer.nextToken());
            context.write(word, one);
        }
    }
 } 

那么这是什么意思?

public static class Map extends Mapper<LongWritable, Text, Text, IntWritable>

为什么我们需要一个“<>”?

4

2 回答 2

2

这称为“泛型”。它允许您添加类型参数。

在这种特殊情况下,这意味着它MapMapper(LongWritable,Text,Text,IntWritable) 的元组。

一个更简单的例子:假设你有一个 Set。它可以是一组整数、一组字符串、一组 MyClass 实例……这就是你使用泛型的地方。
通过声明变量的类型为Set<Integer>,您可以指定它是一组整数。如果您只是将其声明为 Set,则必须自己检查它是否仅包含整数。通过添加类型参数<Integer>,编译器现在可以进行类型检查。

泛型在 Java 语言规范中定义

于 2012-09-17T07:31:15.423 回答
0

看看你的Mapper班级的声明。它可能类似于class Mapper<E, T, T, K>声明 3 种不同泛型类型的东西。

于 2012-09-17T07:33:04.620 回答