@@ -51,22 +51,36 @@ public static ValueInstantiator findStdValueInstantiator(DeserializationConfig c
51
51
return null ;
52
52
}
53
53
54
- private static class ArrayListInstantiator
54
+ private abstract static class JDKValueInstantiator
55
55
extends ValueInstantiator .Base
56
56
implements java .io .Serializable
57
57
{
58
- private static final long serialVersionUID = 2L ;
58
+ private static final long serialVersionUID = 2L ;
59
59
60
- public final static ArrayListInstantiator INSTANCE = new ArrayListInstantiator ();
61
- public ArrayListInstantiator () {
62
- super (ArrayList .class );
60
+ public JDKValueInstantiator (Class <?> type ) {
61
+ super (type );
63
62
}
64
63
65
64
@ Override
66
- public boolean canInstantiate () { return true ; }
65
+ public final boolean canInstantiate () { return true ; }
67
66
68
67
@ Override
69
- public boolean canCreateUsingDefault () { return true ; }
68
+ public final boolean canCreateUsingDefault () { return true ; }
69
+
70
+ // Make abstract to force (re)implementation
71
+ @ Override
72
+ public abstract Object createUsingDefault (DeserializationContext ctxt ) throws IOException ;
73
+ }
74
+
75
+ private static class ArrayListInstantiator
76
+ extends JDKValueInstantiator
77
+ {
78
+ private static final long serialVersionUID = 2L ;
79
+
80
+ public final static ArrayListInstantiator INSTANCE = new ArrayListInstantiator ();
81
+ public ArrayListInstantiator () {
82
+ super (ArrayList .class );
83
+ }
70
84
71
85
@ Override
72
86
public Object createUsingDefault (DeserializationContext ctxt ) throws IOException {
@@ -75,8 +89,7 @@ public Object createUsingDefault(DeserializationContext ctxt) throws IOException
75
89
}
76
90
77
91
private static class HashMapInstantiator
78
- extends ValueInstantiator .Base
79
- implements java .io .Serializable
92
+ extends JDKValueInstantiator
80
93
{
81
94
private static final long serialVersionUID = 2L ;
82
95
@@ -86,21 +99,14 @@ public HashMapInstantiator() {
86
99
super (HashMap .class );
87
100
}
88
101
89
- @ Override
90
- public boolean canInstantiate () { return true ; }
91
-
92
- @ Override
93
- public boolean canCreateUsingDefault () { return true ; }
94
-
95
102
@ Override
96
103
public Object createUsingDefault (DeserializationContext ctxt ) throws IOException {
97
104
return new HashMap <>();
98
105
}
99
106
}
100
107
101
108
private static class LinkedHashMapInstantiator
102
- extends ValueInstantiator .Base
103
- implements java .io .Serializable
109
+ extends JDKValueInstantiator
104
110
{
105
111
private static final long serialVersionUID = 2L ;
106
112
@@ -110,21 +116,14 @@ public LinkedHashMapInstantiator() {
110
116
super (LinkedHashMap .class );
111
117
}
112
118
113
- @ Override
114
- public boolean canInstantiate () { return true ; }
115
-
116
- @ Override
117
- public boolean canCreateUsingDefault () { return true ; }
118
-
119
119
@ Override
120
120
public Object createUsingDefault (DeserializationContext ctxt ) throws IOException {
121
121
return new LinkedHashMap <>();
122
122
}
123
123
}
124
124
125
125
private static class ConstantValueInstantiator
126
- extends ValueInstantiator .Base
127
- implements java .io .Serializable
126
+ extends JDKValueInstantiator
128
127
{
129
128
private static final long serialVersionUID = 2L ;
130
129
@@ -135,16 +134,9 @@ public ConstantValueInstantiator(Object value) {
135
134
_value = value ;
136
135
}
137
136
138
- @ Override // yes, since default ctor works
139
- public boolean canInstantiate () { return true ; }
140
-
141
- @ Override
142
- public boolean canCreateUsingDefault () { return true ; }
143
-
144
137
@ Override
145
138
public Object createUsingDefault (DeserializationContext ctxt ) throws IOException {
146
139
return _value ;
147
140
}
148
141
}
149
-
150
142
}
0 commit comments