我正在用Java和Scala编写一个程序(使用interop)并且它一直给我这个编译错误,这是没有意义的....
描述资源路径位置类型 非法继承;继承trait的不同类型实例IEvaluationFunction:core.interfaces.IEvaluationFunction [core.representation.ILinearRepresentation [Double]]和core.interfaces.IEvaluationFunction [core.representation.ILinearRepresentation [Double]] IConstructors.scala / ScalaMixins - Parjecoliv1 / src / aop第36行斯卡拉问题
它说它继承了不同类型的实例,但它们是相同的。他们俩都是:
core.interfaces.IEvaluationFunction [core.representation.ILinearRepresentation [Double]]
有人可以帮我解决或理解这个吗?
代码:
这是它给出错误的地方。代码在Scala中。
def createFermentationEvaluation(fermentationProcess:FermProcess,
interpolationInterval:Int):FermentationEvaluation = {
return new FermentationEvaluation(fermentationProcess,interpolationInterval)
with EvaluationFunctionAspect[ILinearRepresentation[Double]]
}
以下是它使用的接口和类:
public class FermentationEvaluation
extends EvaluationFunction<ILinearRepresentation<Double>>
trait EvaluationFunctionAspect[T <:IRepresentation]
extends IEvaluationFunction[T] {...}
public abstract class EvaluationFunction<T extends IRepresentation>
implements IEvaluationFunction<T>,java.io.Serializable {...}
public interface IRepresentation {...}
public interface ILinearRepresentation<E> extends IRepresentation {...}
我没有包含任何主体,因为它似乎是一个继承问题。
答案 0 :(得分:3)
其中一种类型是java.lang.Double
- 在Java中定义的类型,其中没有scala.Double
,另一种是scala.Double
- 在Scala中定义的类型。
这是两种不同的类型。 scala.Double
实际上是Java的原始double
,当用作类型参数时,它将擦除为Object
。它无法擦除到java.lang.Double
,因为在某些条件下扩展类型时会中断。