Class LinearUnit

java.lang.Object
org.openjdk.jmc.common.unit.TypedUnit<LinearUnit>
org.openjdk.jmc.common.unit.LinearUnit
All Implemented Interfaces:
Comparable<LinearUnit>, IUnit
Direct Known Subclasses:
LinearUnit.Custom

public class LinearUnit extends TypedUnit<LinearUnit> implements Comparable<LinearUnit>
A measurement unit for a particular kind of quantity.
  • Constructor Details

  • Method Details

    • getUnitClass

      protected final Class<LinearUnit> getUnitClass()
      Description copied from class: TypedUnit
      Get the typed Class object of the actual TypedUnit subclass U. This method is intended to simplify generic code, written in TypedUnit, to go from loosely typed arguments into stricter parameterized arguments.
      Specified by:
      getUnitClass in class TypedUnit<LinearUnit>
    • getContentType

      public LinearKindOfQuantity getContentType()
      Description copied from interface: IUnit
      Get the kind of quantity of this unit.
      Specified by:
      getContentType in interface IUnit
      Specified by:
      getContentType in class TypedUnit<LinearUnit>
    • getDeltaUnit

      public LinearUnit getDeltaUnit()
      Description copied from interface: IUnit
      Get the unit that the difference between two quantities in this unit will have. For linear units, this is always the unit itself.
      Specified by:
      getDeltaUnit in interface IUnit
      Returns:
      the linear unit in which deltas of this unit is expressed
    • getScaledUnit

      protected LinearUnit getScaledUnit(LinearUnit deltaUnit)
      Description copied from class: TypedUnit
      Return a unit with the same origin (if absolute) as this unit, but with the given deltaUnit as its delta unit. Linear units will return deltaUnit.
      Specified by:
      getScaledUnit in class TypedUnit<LinearUnit>
    • getAppendableSuffix

      public String getAppendableSuffix(boolean useBreakingSpace)
      Description copied from interface: IUnit
      Convenience method for (localized) formatters, to prepend a space to IUnit.getLocalizedSymbol(), if needed.
      Specified by:
      getAppendableSuffix in interface IUnit
      Parameters:
      useBreakingSpace - to use breaking space instead of the default, non-breaking space (only for edit)
      Returns:
      a localized string to be appended to a number when displaying a quantity (including space, if non-empty).
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • compareTo

      public int compareTo(LinearUnit other)
      Specified by:
      compareTo in interface Comparable<LinearUnit>
    • quantity

      public ITypedQuantity<LinearUnit> quantity(long numericalValue)
      Description copied from interface: IUnit
      Create a quantity expressed in this unit and with a numerical quantity value equal to numericalValue.
      Specified by:
      quantity in interface IUnit
      Specified by:
      quantity in class TypedUnit<LinearUnit>
    • quantity

      public ITypedQuantity<LinearUnit> quantity(double numericalValue)
      Description copied from interface: IUnit
      Create a quantity expressed in this unit and with a numerical quantity value equal to numericalValue.
      Specified by:
      quantity in interface IUnit
      Specified by:
      quantity in class TypedUnit<LinearUnit>
    • valueTransformTo

      public ScaleFactor valueTransformTo(LinearUnit targetUnit)
      Description copied from class: TypedUnit
      Get a transform for transforming numerical quantity values expressed in this unit to numerical quantity values expressed in targetUnit. This method is typically only used internally by the quantity implementations. Note that this method differs from TypedUnit.valueTransformTo(IUnit) only by stricter typing.
      Specified by:
      valueTransformTo in class TypedUnit<LinearUnit>
    • isLinear

      public boolean isLinear()
      Description copied from interface: IUnit
      If this unit is linear. That is, if quantities expressed in this unit and in units of the same kind can be added to and subtracted from each other, and the resulting quantity remains of the same kind.
      Specified by:
      isLinear in interface IUnit
      Returns:
      true if and only if the unit is linear
    • add

      protected ITypedQuantity<LinearUnit> add(long numericalAugend, LinearUnit addendUnit, long numericalAddend)
      Specified by:
      add in class TypedUnit<LinearUnit>
    • subtractSame

      protected ITypedQuantity<LinearUnit> subtractSame(long numericalMinuend, LinearUnit subtrahendUnit, long numericalSubtrahend)
      Specified by:
      subtractSame in class TypedUnit<LinearUnit>
    • floorQuantize

      protected ITypedQuantity<LinearUnit> floorQuantize(long numericalValue, ITypedQuantity<LinearUnit> quanta)
      Specified by:
      floorQuantize in class TypedUnit<LinearUnit>
    • floorQuantize

      protected ITypedQuantity<LinearUnit> floorQuantize(double numericalValue, ITypedQuantity<LinearUnit> quanta)
      Specified by:
      floorQuantize in class TypedUnit<LinearUnit>
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getIdentifier

      public String getIdentifier()
      Description copied from interface: IUnit
      Persistable identifier, not to show interactively.
      Specified by:
      getIdentifier in interface IUnit
      Returns:
      the persistable (locale independent) identifier, or (possibly) null if this unit isn't persistable.
    • getLocalizedSymbol

      public String getLocalizedSymbol()
      Description copied from interface: IUnit
      Symbols for units are most often not locale dependent, but there are exceptions (like in French). Also, besides real persistable units, temporary units are sometimes constructed for display purposes, and they might vary due to internationalization, and conceivably language.

      While symbols normally don't contain any white space, spacing occur in circumstances like custom units. In this case, it is important that they are non-breaking spaces ( ).

      Specified by:
      getLocalizedSymbol in interface IUnit
      Returns:
      the localized symbol of this unit.
    • getLocalizedDescription

      public String getLocalizedDescription()
      Description copied from interface: IUnit
      In the real world, units are sometimes used ambiguously (like MB). This description is intended to remove such ambiguity where needed.
      Specified by:
      getLocalizedDescription in interface IUnit
      Returns:
      a (possibly) localized unambiguous description of this unit
    • getAltLocalizedNames

      public String[] getAltLocalizedNames()
      Description copied from interface: IUnit
      Get alternate names for content assist matching. Note that these should never contain non-breaking spaces, only regular (breaking) spaces.
      Specified by:
      getAltLocalizedNames in interface IUnit
      Returns:
      an array, possibly empty, of names with which to match for content assist, never null.
    • isCustom

      protected boolean isCustom()
    • asWellKnownQuantity

      public ITypedQuantity<LinearUnit> asWellKnownQuantity()
      Returns:
      a quantity with the same magnitude as this unit, defined in a non-custom unit (possibly itself)
    • persistableStringFor

      protected String persistableStringFor(Number numericalValue)
      Specified by:
      persistableStringFor in class TypedUnit<LinearUnit>
    • localizedFormatFor

      protected String localizedFormatFor(Number numericalValue, boolean useBreakingSpace, boolean allowCustomUnit)
      Specified by:
      localizedFormatFor in class TypedUnit<LinearUnit>
    • customParseInteractive

      public ITypedQuantity<LinearUnit> customParseInteractive(String interactiveQuantity) throws QuantityConversionException
      Parse an interactive string, like KindOfQuantity.parseInteractive(String), with the addition that this unit is accepted, even if not generally by the kind of quantity. Only guaranteed to be able to parse strings produced by localizedFormatFor(Number, boolean, boolean) for this unit or by IQuantity.interactiveFormat() for quantities of this kind of quantity, and in the same locale. Only use this for interactive input, never for persisted strings.
      Parameters:
      interactiveQuantity - interactive string to parse
      Returns:
      a valid quantity for this kind of quantity
      Throws:
      QuantityConversionException - if parsing failed