2015-11-11 3 views
0

У меня есть этот класс [1], который я пытаюсь использовать с моим классом [2]. Но дженерики MyIdentityMapper ошибочны. Я хочу создать общий класс, который, когда я его использую (MyIdentityMapper), передаю правильные типы. Как использовать дженерики в MyIdentityMapper здесь?Использование Generics является подклассом

[1] Класс Mapper:

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); 
    } 
} 

ответ

1

Вы должны объявлять параметры типа K и V на MyIdentityMapper так что они могут ссылаться в остальных класса.

public class MyIdentityMapper<K, V> // ... rest doesn't change 
1

Вы должны сказать, что 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); 
    } 
} 
Смежные вопросы