我正在将我的 2.9.* 项目更新到 2.10。我有几个基本类型(角度、长度等)的类,它们似乎是值类型的完美候选者。不幸的是,我使用这些类型的 Java 代码没有编译,我不知道为什么。我已将其简化为一组非常简单的代码。任何建议将不胜感激。
角度类定义(scala)
package com.example.units
class Angle(val radians : Double) extends AnyVal
{
def degrees = radians * 180.0 / math.Pi
}
object Angle
{
val Zero = new Angle(0)
}
角度测试用例(痛苦地用 Java 编写)
package com.example.units;
import junit.framework.Assert;
import org.junit.Test;
public class AngleTest
{
@Test
public static void TestZero()
{
Angle a = Angle.Zero();
Assert.assertEquals(a.degrees(), 0, 1E-9);
}
}
当我编译时,我得到这个错误:
AngleTest.java:19 incompatible types
found :double
required: com.example.units.Angle
Angle a = Angle.Zero();
^
在我看来,Angle.Zero 好像是作为双精度返回的,而不是角度。我尝试添加 box/unbox 方法,但继续收到相同的错误。再次,任何帮助将不胜感激。