Java Scala';无需覆盖';错误
在Scala中为Hbase编写mapreduce作业时,我遇到了这个奇怪的问题。问题是,我的scala类让ScalaMapReducer扩展以下类 但是,当我这样做并“重写”map方法(继承自TableMapper的超类映射器)时,scala会抱怨错误“map overrides nothing”并且无法编译,而我可以在Java中这样做而不会出现任何问题 我发现了以下解决方法: 1) 定义一个虚拟Java类,该类扩展TableMapper类并用一些空实现覆盖映射。现在从scala扩展这个虚拟类 2) 我在谷歌上找到的 它定义了映射器特性 虽然我猜测这可能与内部类有关,但我没有更多的线索和解释 (这是一个一般的Scala问题) 编辑: 来自scala类的示例代码Java Scala';无需覆盖';错误,java,scala,Java,Scala,在Scala中为Hbase编写mapreduce作业时,我遇到了这个奇怪的问题。问题是,我的scala类让ScalaMapReducer扩展以下类 但是,当我这样做并“重写”map方法(继承自TableMapper的超类映射器)时,scala会抱怨错误“map overrides nothing”并且无法编译,而我可以在Java中这样做而不会出现任何问题 我发现了以下解决方法: 1) 定义一个虚拟Java类,该类扩展TableMapper类并用一些空实现覆盖映射。现在从scala扩展这个虚拟类
class ScalaMapReducer extends TableMapper[Text,IntWritable]
{
override def map(row:ImmutableBytesWritable,result:Result,context:Context):Unit =
{
//..some code
}
}
“映射不覆盖任何内容”错误几乎总是因为映射中的键、值类型和reduce定义不匹配。仔细检查,还有一些示例代码可能有助于更好地进行调试。根据提供的信息(即没有代码!),最有可能发生的错误是使用类型参数的错误。例如,如果接口定义了一个方法:
public interface I<T> { public void doStuff(T t); }
虽然我不能确定,因为你没有给我们看代码。如果您使用的是IDE,为什么不让它填写一个空白的实现呢?(使用IDEA,这是
CTRL-i
)您可以添加一些示例代码来说明错误吗?
class I0 extends I[String] { override def doStuff[String](String s) }
// ^^^^^^ ^^^^^^
// oops, a type parameter