Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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_Generics - Fatal编程技术网

Java 泛型的使用是一个子类

Java 泛型的使用是一个子类,java,generics,Java,Generics,我有一个类[1],我尝试将它用于我的类[2]。但是,MyIdentityMapper的泛型是错误的。我想创建一个泛型类,当我使用它时(MyIdentityMapper),我会传递正确的类型。我应该如何在MyIdentityMapper中使用泛型 [1] 映射器类: public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {...} 公共类映射器{…} [2] 身份类别: public class MyIdentityMapper

我有一个类[1],我尝试将它用于我的类[2]。但是,
MyIdentityMapper
的泛型是错误的。我想创建一个泛型类,当我使用它时(
MyIdentityMapper
),我会传递正确的类型。我应该如何在
MyIdentityMapper
中使用泛型

[1] 映射器类:

public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {...}
公共类映射器{…}
[2] 身份类别:

public class MyIdentityMapper extends Mapper<K,V,K,V> {
  public void map(K key, V value, Context context) throws IOException, InterruptedException {
    context.write(key, value);
  }
}
公共类MyIdentityMapper扩展映射器{
公共void映射(K键、V值、上下文上下文)引发IOException、InterruptedException{
编写(键、值);
}
}

您需要在
MyIdentityMapper
上声明
K
V
类型参数,以便在类的其余部分中引用它们

public class MyIdentityMapper<K, V> // ... rest doesn't change
公共类MyIdentityMapper/。。。休息不会改变

您必须告诉java什么是您的泛型,诸如此类

class Mapper<K, V, X, M> {

}

class MyIdentityMapper<K,V,X,M> extends Mapper<K,V,X,M> {
    public void map(K key, V value, Context context) throws IOException, InterruptedException {
        System.out.println(k);
        System.out.println(v);
        System.out.println(x);
        System.out.println(m);
    }
}
类映射器{
}
类MyIdentityMapper扩展映射器{
公共void映射(K键、V值、上下文上下文)引发IOException、InterruptedException{
系统输出println(k);
系统输出打印Ln(v);
系统输出println(x);
系统输出打印项次(m);
}
}