Class NumberNode
- java.lang.Object
-
- software.amazon.smithy.model.node.Node
-
- software.amazon.smithy.model.node.NumberNode
-
- All Implemented Interfaces:
FromSourceLocation,ToNode
public final class NumberNode extends Node
Represents a number node. Number nodes contain aNumbervalue.Number nodes contain a value. You can inspect its type by calling
isNaturalNumber()orisFloatingPointNumber(). Natural numbers are positive, or negative numbers without a decimal part.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class software.amazon.smithy.model.node.Node
Node.NonNumericFloat
-
-
Constructor Summary
Constructors Constructor Description NumberNode(java.lang.Number value, SourceLocation sourceLocation)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description <R> Raccept(NodeVisitor<R> visitor)Accepts a visitor with the node.java.util.Optional<java.math.BigDecimal>asBigDecimal()Gets the number value as a BigDecimal if possible.java.util.Optional<NumberNode>asNumberNode()Gets the node as an NumberNode if it is an number.booleanequals(java.lang.Object other)NumberNodeexpectNumberNode(java.lang.String errorMessage)Casts the current node to aNumberNode, throwingExpectationNotMetExceptionwhen the node is the wrong type.NumberNodeexpectNumberNode(java.util.function.Supplier<java.lang.String> errorMessage)Casts the current node to aNumberNode, throwingExpectationNotMetExceptionwhen the node is the wrong type.NodeTypegetType()Gets the type of the node.java.lang.NumbergetValue()Gets the number value.inthashCode()booleanisFloatingPointNumber()Returns true if the node contains a floating point number.booleanisInfinite()Returns true if the number is infinite.booleanisNaN()Returns true if the number is a floating point NaN.booleanisNaturalNumber()Deprecated.booleanisNegative()Check the value is negative, including negative infinity.booleanisZero()Returns true if the value of the number contained in the number node is zero, accounting for float, double, bigInteger, bigDecimal, and other numeric types (e.g., 0, 0.0, etc).java.lang.StringtoString()-
Methods inherited from class software.amazon.smithy.model.node.Node
arrayNode, arrayNode, asArrayNode, asBooleanNode, asNullNode, asObjectNode, assertEquals, asStringNode, diff, expectArrayNode, expectArrayNode, expectArrayNode, expectBooleanNode, expectBooleanNode, expectBooleanNode, expectNullNode, expectNullNode, expectNullNode, expectNumberNode, expectObjectNode, expectObjectNode, expectObjectNode, expectStringNode, expectStringNode, expectStringNode, from, from, from, from, fromNodes, fromNodes, fromStrings, fromStrings, getSourceLocation, isArrayNode, isBooleanNode, isNullNode, isNumberNode, isObjectNode, isStringNode, loadArrayOfString, nullNode, objectNode, objectNode, objectNodeBuilder, parse, parse, parse, parse, parseJsonWithComments, parseJsonWithComments, prettyPrintJson, prettyPrintJson, printJson, toNode, withDeepSortedKeys, withDeepSortedKeys
-
-
-
-
Constructor Detail
-
NumberNode
public NumberNode(java.lang.Number value, SourceLocation sourceLocation)
-
-
Method Detail
-
getValue
public java.lang.Number getValue()
Gets the number value.- Returns:
- Returns a number.
-
asBigDecimal
public java.util.Optional<java.math.BigDecimal> asBigDecimal()
Gets the number value as a BigDecimal if possible.NaN and infinite numbers will return an empty Optional.
- Returns:
- Returns the BigDecimal value of the wrapped number.
-
isNaturalNumber
@Deprecated public boolean isNaturalNumber()
Deprecated.
-
isNegative
public boolean isNegative()
Check the value is negative, including negative infinity.Any number >= 0, +Infinity, and NaN return false.
- Returns:
- Return true if negative.
-
isFloatingPointNumber
public boolean isFloatingPointNumber()
Returns true if the node contains a floating point number.- Returns:
- Returns true if the node contains a floating point number.
-
isNaN
public boolean isNaN()
Returns true if the number is a floating point NaN.- Returns:
- Return true if NaN.
-
isInfinite
public boolean isInfinite()
Returns true if the number is infinite.- Returns:
- Return true if infinite.
-
accept
public <R> R accept(NodeVisitor<R> visitor)
Description copied from class:NodeAccepts a visitor with the node.
-
expectNumberNode
public NumberNode expectNumberNode(java.lang.String errorMessage)
Description copied from class:NodeCasts the current node to aNumberNode, throwingExpectationNotMetExceptionwhen the node is the wrong type.- Overrides:
expectNumberNodein classNode- Parameters:
errorMessage- Error message to use if the node is of the wrong type.- Returns:
- Returns a number node.
-
expectNumberNode
public NumberNode expectNumberNode(java.util.function.Supplier<java.lang.String> errorMessage)
Description copied from class:NodeCasts the current node to aNumberNode, throwingExpectationNotMetExceptionwhen the node is the wrong type.- Overrides:
expectNumberNodein classNode- Parameters:
errorMessage- Error message supplier.- Returns:
- Returns a number node.
-
asNumberNode
public java.util.Optional<NumberNode> asNumberNode()
Description copied from class:NodeGets the node as an NumberNode if it is an number.- Overrides:
asNumberNodein classNode- Returns:
- Returns the optional NumberNode.
-
isZero
public boolean isZero()
Returns true if the value of the number contained in the number node is zero, accounting for float, double, bigInteger, bigDecimal, and other numeric types (e.g., 0, 0.0, etc).Note that -0 and +0 are considered 0. However, NaN is not considered zero. When unknown number types are encountered, this method will return true if the toString of the given number returns "0", or "0.0". Other kinds of unknown number types will be treated like a double.
Double and float comparisons to zero are exact and use no rounding. The majority of values seen by this method come from models that use "0" or "0.0". However, we can improve this in the future with some kind of epsilon if the need arises.
- Returns:
- Returns true if set to zero.
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-