Несколько способов оценки типов в Java

Java Spring

1. Введение

существуетJavaПреобразование типов и оценка типов часто встречаются в этом строго типизированном языке. считай это сегодняJavaметод определения типа.

2. instanceof

instanceofдаJavaОператор, используемый для определения того, является ли объект экземпляром класса. использование:

boolean isInstance = obj instanceof Class

вobjКак экземпляр объекта,ClassИмя класса или имя интерфейса, когдаobjзаClass, или экземпляр его подкласса, или экземпляр класса реализации его интерфейса, все возвращаютtrue, иначе возвратfalse.

должен быть в курсеobjДолжен быть ссылочным, а не примитивным типом, следующая формула не будет компилироваться:

int integer = 0;
// 编译时会报错
boolean isInstance = integer instanceof Number

Кроме того, компилятор проверяетinstanceofВыражениеobjМожно ли преобразовать в правоClassЕсли тип не может быть преобразован, будет сообщено об ошибке напрямую.Если тип не может быть определен, он также пройдет компиляцию.

3. Class.isInstance

   // Class.isInstance 等效于instanceof 操作符
  boolean ret = entity instanceof UserInfo;
  boolean isInstance = UserInfo.class.isInstance(entity);

Как показано вышеClass.isInstanceравноinstanceofоператор. Метод находится вJava 1.1вводится, потому что его можно использовать динамически. Если параметр неnull, и может запускаться безClassCastExceptionбудет возвращено при успешном приведении к левому ссылочному типу в случаеtrue.

4. Class.isAssignableFrom

Вызывающий и параметры методаClassObject, вызывающий объект — это родительский класс, а параметр — это он сам или его подкласс.

boolean assignableFrom = List.class.isAssignableFrom(ArrayList.class);

Он часто используется для определения отношения наследования родитель-потомок.Я использовал этот метод в учебной статье плагина Mybatis, чтобы определить, является ли класс классом реализации интерфейса.

5. Class.isPrimitive

Этот метод в основном используется для определенияClassЭто примитивный тип (boolean,char,byte,short,int,long,float,double).

//true
boolean primitive = int.class.isPrimitive();

Это должно решить проблему базового суждения о типах, о которой мы упоминали в разделе 2 этой статьи. Но он может только судить, является ли определенный тип базовым типом, а не специфичным для определенного типа.

Однако обратите внимание, что тип-оболочка базового типа вернет false, если этот метод используется для оценки результата.

6. Резюме

Эти типы суждений более распространены, чем первые два, а возможности последних двух ограничены. Я не знаю, что из этого вы использовали? Добро пожаловать, чтобы оставить сообщение для обсуждения. Я:Код Фермер Маленький Толстый Брат, уделяйте больше внимания и делитесь знаниями.