используя Scala 2.10.1 типы значений в Java
Я обновляю свой проект 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, но продолжаю получать ту же ошибку. Опять же, любая помощь будет принята с благодарностью.