Scala非法继承错误没有意义

时间:2014-10-30 04:17:50

标签: java scala inheritance

我正在用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 {...}

我没有包含任何主体,因为它似乎是一个继承问题。

1 个答案:

答案 0 :(得分:3)

其中一种类型是java.lang.Double - 在Java中定义的类型,其中没有scala.Double,另一种是scala.Double - 在Scala中定义的类型。

这是两种不同的类型。 scala.Double实际上是Java的原始double,当用作类型参数时,它将擦除为Object。它无法擦除到java.lang.Double,因为在某些条件下扩展类型时会中断。