przy użyciu Scala 2.10.1 Typy wartości w Javie
Aktualizuję mój projekt 2.9. * Do 2.10. Mam kilka klas dla podstawowych typów (kąty, długości itp.), Które wydają się być idealnymi kandydatami na typy wartości. Niestety, mój kod Java, który używa tych typów, nie jest kompilowany i nie mogę zrozumieć dlaczego. Uprościłem go do bardzo prostego zestawu kodu. Wszelkie sugestie byłyby bardzo mile widziane.
Definicja klasy kąta (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)
}
Przypadek testowy kąta (boleśnie napisany w Javie)
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);
}
}
Podczas kompilacji pojawia się ten błąd:
AngleTest.java:19 incompatible types
found :double
required: com.example.units.Angle
Angle a = Angle.Zero();
^
Wygląda na to, że Angle.Zero jest zwracany jako podwójny, a nie kąt. Próbowałem dodać metody box / unbox, ale nadal otrzymuję ten sam błąd. Ponownie, każda pomoc byłaby bardzo mile widziana.