How do I “get” a Scala case object from Java?

后端 未结 3 1131
别那么骄傲
别那么骄傲 2020-12-15 03:27

I created a hierarchy of case objects in Scala that looks like the following:

package my.awesome.package

sealed abstract class PresetShapeType(val displayNa         


        
相关标签:
3条回答
  • 2020-12-15 03:49

    from Java, say:

    my.awesome.package.PressureSensor$.MODULE$
    
    0 讨论(0)
  • 2020-12-15 04:06

    This is still a hack, but in my opinion a bit more readable in Java. Just add a method to explicitly return the reference to the singleton instance (it shows up as a static method on the class):

    sealed abstract class PresetShapeType(val displayName: String)
    
    case object AccelerationSensor extends PresetShapeType("Acceleration Sensor") { def instance = this }
    case object DisplacementSensor extends PresetShapeType("Displacement Sensor") { def instance = this }
    case object ForceSensor extends PresetShapeType("Force Sensor") { def instance = this }
    case object PressureSensor extends PresetShapeType("Pressure Sensor") { def instance = this }
    case object StrainSensor extends PresetShapeType("Strain Sensor") { def instance = this }
    

    And then in Java:

    import my.awesome.package.PressureSensor;
    DVShape newshape = DVShapeFactory.createPresetShape(PressureSensor.instance(), new Point3f(0,0,0));
    
    0 讨论(0)
  • 2020-12-15 04:08

    PressureSensor$.MODULE$ should give you the instance of the case object.

    0 讨论(0)
提交回复
热议问题