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 aNumber
value.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> R
accept(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.boolean
equals(java.lang.Object other)
NumberNode
expectNumberNode(java.lang.String errorMessage)
Casts the current node to aNumberNode
, throwingExpectationNotMetException
when the node is the wrong type.NumberNode
expectNumberNode(java.util.function.Supplier<java.lang.String> errorMessage)
Casts the current node to aNumberNode
, throwingExpectationNotMetException
when the node is the wrong type.NodeType
getType()
Gets the type of the node.java.lang.Number
getValue()
Gets the number value.int
hashCode()
boolean
isFloatingPointNumber()
Returns true if the node contains a floating point number.boolean
isInfinite()
Returns true if the number is infinite.boolean
isNaN()
Returns true if the number is a floating point NaN.boolean
isNaturalNumber()
Deprecated.boolean
isNegative()
Check the value is negative, including negative infinity.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).java.lang.String
toString()
-
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:Node
Accepts a visitor with the node.
-
expectNumberNode
public NumberNode expectNumberNode(java.lang.String errorMessage)
Description copied from class:Node
Casts the current node to aNumberNode
, throwingExpectationNotMetException
when the node is the wrong type.- Overrides:
expectNumberNode
in 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:Node
Casts the current node to aNumberNode
, throwingExpectationNotMetException
when the node is the wrong type.- Overrides:
expectNumberNode
in classNode
- Parameters:
errorMessage
- Error message supplier.- Returns:
- Returns a number node.
-
asNumberNode
public java.util.Optional<NumberNode> asNumberNode()
Description copied from class:Node
Gets the node as an NumberNode if it is an number.- Overrides:
asNumberNode
in 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:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-