В процессе некоторого размышления о типах Java я сталкивался с странностью, которую я не понимаю.
Проверка int
для его модификаторов возвращает public
, abstract
и final
. Я понимаю public
и final
, но наличие abstract
для примитивного типа для меня неочевидно. Почему это так?
Изменить: я не задумываюсь о Integer
, а о int
:
import java.lang.reflect.Modifier;
public class IntegerReflection {
public static void main(final String[] args) {
System.out.println(String.format("int.class == Integer.class -> %b", int.class == Integer.class));
System.out.println(String.format("int.class modifiers: %s", Modifier.toString(int.class.getModifiers())));
System.out.println(String.format("Integer.class modifiers: %s", Modifier.toString(Integer.class.getModifiers())));
}
}
Выход при запуске:
int.class == Integer.class -> false
int.class modifiers: public abstract final
Integer.class modifiers: public final