scala - 如何从Java “get”一个Scala案例对象?

标签 scala case-class

我在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));

那么,如何从Java引用PressureSensor大小写对象?我反编译了PressureSensorPressureSensor$类的字节码,结果如下:
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();
}

但这并没有产生任何深刻的见解。

最佳答案

从Java说:

my.awesome.package.PressureSensor$.MODULE$

关于scala - 如何从Java “get”一个Scala案例对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561415/

相关文章:

scala - 如何最有效地将 Scala DataFrame 的 Row 转换为 case 类?

oop - 通过 Scala 中的返回类型重写方法,oop 解决方案?

java - Scala的 Actor ,java的等价物是什么?权衡?

scala - 案例类继承有什么*如此*错误?

scala - 如何基于另一个类似的案例类创建案例类?

scala - 在 Scala 中更新 key

scala - Play 2.4.1 注入(inject) Logging 过滤器,如给定示例所示

class - Scala:从子类引用伴随对象

scala - 使用Scala案例类进行建模

scala - 动态混合特征