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

后端 未结 3 1137
别那么骄傲
别那么骄傲 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 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));
    

提交回复
热议问题