これは一般的なJavaの質問ですが、特にHadoop 2.6への依存のために苦労しています。ジェネリッククラスの内部クラスを使う
私のようなルックスで動作するようにしようとしている外部コード:
package org.apache.hadoop.mapreduce;
public class Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
public abstract class Context
implements ReduceContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
}
}
そして、私自身のコードは、私はその私が」することができます。このコードで、コンパイラ警告が表示されます
import org.apache.hadoop.mapreduce.Reducer.Context;
public class MyReducerTest {
@Mock
private Context context;
}
のように見えますそれを抑えることの不足を取り除くようだ。
Reducer.Context is a raw type. References to generic type
Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT>.Context should be parameterized
私が何をすべきかを見つけるためにしようとするたびに、答えは違ったクラス・パラメータを使用して、ネストされたクラスの構造を変更することを中心に展開しているようです。しかし、Hadoopのコードを変更することは選択肢ではない(チームの制約のために2.6からアップグレードすることもない)。
私は
import org.apache.hadoop.mapreduce.Reducer<?,?,?,?>.Context;
と
public class MyReducerTest {
@Mock
private Context<?,?,?,?> context;
}
を試みたが、これらの原因のコンパイルエラーました。私は警告を抑止したり無視したりすることができますが、それらのオプションはそれぞれの理由で悪いです。
ここでJavaは私に何をしたいのですか?
なぜ 'Context'は内部クラスですか? – Savior