Как я “получаю” объект случая Scala от Java?

Я создал иерархию объектов случая в Scala, который похож на следующее:

package my.awesome.package

sealed abstract class PresetShapeType(val displayName: String)

case object AccelerationSensor extends PresetShapeType("Acceleration Sensor")
case object DisplacementSensor extends PresetShapeType("Displacement Sensor")
case object ForceSensor        extends PresetShapeType("Force Sensor")
case object PressureSensor     extends PresetShapeType("Pressure Sensor")
case object StrainSensor       extends PresetShapeType("Strain Sensor")

У меня также есть часть кода Java, в котором я хотел бы получить доступ PressureSensor, но следующее не работает:

package my.awesome.package.subpackage;

import my.awesome.package.PressureSensor;

// Do some stuff, then...

DVShape newshape = DVShapeFactory.createPresetShape(PressureSensor, new Point3f(0,0,0));

Так, как я ссылаюсь PressureSensor объект случая от Java? Я декомпилировал код байта для обоих PressureSensor и PressureSensor$ классы, которые привели к следующему:

Compiled from "DVShapeFactory.scala"
public final class org.nees.rpi.vis.PressureSensor extends java.lang.Object{
    public static final java.lang.Object productElement(int);
    public static final int productArity();
    public static final java.lang.String productPrefix();
    public static final int $tag();
    public static final java.lang.String displayName();
}

Compiled from "DVShapeFactory.scala"
public final class org.nees.rpi.vis.PressureSensor$ extends org.nees.rpi.vis.PresetShapeType implements scala.ScalaObject,scala.Product,java.io.Serializable{
    public static final org.nees.rpi.vis.PressureSensor$ MODULE$;
    public static {};
    public org.nees.rpi.vis.PressureSensor$();
    public java.lang.Object readResolve();
    public java.lang.Object productElement(int);
    public int productArity();
    public java.lang.String productPrefix();
    public final java.lang.String toString();
    public int $tag();
}

Но это не привело ни к какому большому пониманию.

33
задан mipadi 1 April 2010 в 15:14
поделиться

2 ответа

с Явы, скажем:

my.awesome.package.PressureSensor$.MODULE$
37
ответ дан 27 November 2019 в 18:21
поделиться

Датчик давления $ .MODULE $ должен предоставить вам экземпляр объекта case.

11
ответ дан 27 November 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: