Исходя из Field.getType()
(вместо f.getDeclaringClass()
), я получаю следующее:
Type: java.lang.Integer
equals(Integer.class): true
equals(int.class) : false
equals(Integer.TYPE) : false
== (Integer.class) : true
== (int.class) : false
== (Integer.TYPE) : false
Type: int
equals(Integer.class): false
equals(int.class) : true
equals(Integer.TYPE) : true
== (Integer.class) : false
== (int.class) : true
== (Integer.TYPE) : true
Type: java.lang.Object
equals(Integer.class): false
equals(int.class) : false
equals(Integer.TYPE) : false
== (Integer.class) : false
== (int.class) : false
== (Integer.TYPE) : false
Это означает следующее:
Integer.TYPE.equals(int.class)
Integer.TYPE == int.class
Значение, если я хочучтобы узнать, имею ли я дело с int
или Integer
, я могу использовать любой из следующих тестов:
isInteger = c.equals(Integer.class) || c.equals(Integer.TYPE);
isInteger = c.equals(Integer.class) || c.equals(int.class);
isInteger = (c == Integer.class) || (c == Integer.TYPE);
isInteger = (c == Integer.class) || (c == int.class );
Есть ли угловой корпус, который я пропускаю?Если да, пожалуйста, прокомментируйте.