• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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