1 package com.fasterxml.jackson.databind.node; 2 3 import java.math.BigDecimal; 4 import java.math.BigInteger; 5 6 import com.fasterxml.jackson.core.JsonParser; 7 8 /** 9 * Intermediate value node used for numeric nodes. 10 */ 11 public abstract class NumericNode 12 extends ValueNode 13 { 14 private static final long serialVersionUID = 1L; 15 NumericNode()16 protected NumericNode() { } 17 18 @Override getNodeType()19 public final JsonNodeType getNodeType() 20 { 21 return JsonNodeType.NUMBER; 22 } 23 24 // // // Let's re-abstract so sub-classes handle them 25 26 @Override numberType()27 public abstract JsonParser.NumberType numberType(); 28 numberValue()29 @Override public abstract Number numberValue(); intValue()30 @Override public abstract int intValue(); longValue()31 @Override public abstract long longValue(); doubleValue()32 @Override public abstract double doubleValue(); decimalValue()33 @Override public abstract BigDecimal decimalValue(); bigIntegerValue()34 @Override public abstract BigInteger bigIntegerValue(); 35 canConvertToInt()36 @Override public abstract boolean canConvertToInt(); canConvertToLong()37 @Override public abstract boolean canConvertToLong(); 38 39 /* 40 /********************************************************** 41 /* General type coercions 42 /********************************************************** 43 */ 44 45 @Override asText()46 public abstract String asText(); 47 48 @Override asInt()49 public final int asInt() { 50 return intValue(); 51 } 52 53 @Override asInt(int defaultValue)54 public final int asInt(int defaultValue) { 55 return intValue(); 56 } 57 58 @Override asLong()59 public final long asLong() { 60 return longValue(); 61 } 62 63 @Override asLong(long defaultValue)64 public final long asLong(long defaultValue) { 65 return longValue(); 66 } 67 68 @Override asDouble()69 public final double asDouble() { 70 return doubleValue(); 71 } 72 73 @Override asDouble(double defaultValue)74 public final double asDouble(double defaultValue) { 75 return doubleValue(); 76 } 77 78 /* 79 /********************************************************** 80 /* Other 81 /********************************************************** 82 */ 83 84 /** 85 * Convenience method for checking whether this node is a 86 * {@link FloatNode} or {@link DoubleNode} that contains 87 * "not-a-number" (NaN) value. 88 * 89 * @since 2.9 90 */ isNaN()91 public boolean isNaN() { 92 return false; 93 } 94 95 } 96