【发布时间】:2021-11-20 11:00:13
【问题描述】:
我有 scala - 带有 scala 版本 2.13 的 java polyglot 项目
以下是标准项目结构
$scala-java-extend-demo on master
± tree .
.
├── build.gradle.kts
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
└── src
├── main
├── java
│ ├── Collector.java
│ ├── Function.java
│ ├── JProcessAllWindowFunction.java
│ └── Window.java
├── resources
└── scala
└── ScalaProcessAllWindowFunctionWrapper.scala
24 directories, 15 files
下面是Collector.java
public interface Collector<T> {
void collect(T record);
void close();
}
下面是Function.java
public interface Function extends java.io.Serializable {}
下面是Window.java
public abstract class Window {
public abstract long maxTimestamp();
}
下面是JProcessAllWindowFunction.java
public abstract class JProcessAllWindowFunction<IN, OUT, W extends Window> {
private static final long serialVersionUID = 1L;
public void process(Context context, Iterable<IN> elements, Collector<OUT> out){}
public void clear(Context context) {}
public abstract class Context {
public abstract W window();
public abstract <X> void output( X value);
}
}
下面是扩展JProcessAllWindowFunction的ScalaProcessAllWindowFunctionWrapper.scala
import java.lang
final class ScalaProcessAllWindowFunctionWrapper[IN, OUT, W <: Window] extends JProcessAllWindowFunction[IN, OUT, W] {
override def process(context: JProcessAllWindowFunction[IN, OUT, W]#Context, elements: lang.Iterable[IN], out: Collector[OUT]): Unit = ???
}
当我编译项目时出现以下错误 -
> scala-java-extend-demo on master $ ± gradle clean build > Task :compileScala FAILED [Error] /Users/myuser/Coding/misc/scala-java-extend-demo/src/main/scala/ScalaProcessAllWindowFunctionWrapper.scala:4: method process overrides nothing. Note: the super classes of class ScalaProcessAllWindowFunctionWrapper contain the following, non final members named process: def process: ((context: _1.Context, elements: Iterable[IN], out: Collector[OUT]): Unit) forSome { val _1: ScalaProcessAllWindowFunctionWrapper[IN,OUT,W] } one error found FAILURE: Build failed with an exception.
项目在github上here。
我该如何解决这个错误?
【问题讨论】:
标签: java scala generics scala-java-interop type-projection