Есть ли что-то как instanceOf (Класс <?> c) в Java?

Измените свою тему из файла манифеста для желаемого действия ...

 Theme.AppCompat.NoActionBar 
    or 
 Theme.AppCompat.Light.NoActionBar

Программно вы можете невидимую панель инструментов с помощью этой строки кодов

, если вы расширили свое действие действием Затем используйте следующую строку кода для отображения или скрытия панели инструментов

getActionBar().hide();
getActionBar().show();

, а если вы расширяете свою активность из AppCompact Activity, тогда используйте

Для расширения класса Activity:

getActionBar () скрыть (). getActionBar () шоу (). Для расширения класса AppCompatActivity:

getSupportActionBar().hide();
getSupportActionBar().show();
83
задан acdcjunior 5 July 2016 в 01:20
поделиться

6 ответов

Class.isInstance делает то, что вы хотите.

if (Point.class.isInstance(someObj)){
    ...
}

Конечно, вам не следует использовать его, если вы можете использовать вместо него instanceof , но для сценариев отражения это часто бывает полезно.

162
ответ дан 24 November 2019 в 08:48
поделиться
x instanceof Integer
x instanceof Object

вам просто нужно использовать правильный синтаксис

для примитивных типов, вы должны сделать это совершенно по-другому. Поскольку вы не можете создавать для них методы, вам нужен класс, который хранит метод. Поэтому вместо «x.instanceOf (Integer.Class)» вы должны вызвать «MyClassComparer.instanceOf (x, Integer.Class)» или что-то в этом роде. Это можно легко реализовать с помощью методов перегрузки, но я не вижу случая, когда такая функциональность вообще была бы желательна.

9
ответ дан 24 November 2019 в 08:48
поделиться

Если вызываемая веб-служба использует встроенную безопасность Windows, создание NetworkCredential из текущего WindowsIdentity должно быть достаточным для того, чтобы веб-служба могла использовать текущий пользовательский вход в Windows. Однако, если веб-служба использует другую модель безопасности, нет никакого способа извлечь пароль пользователя из текущего удостоверения ... что само по себе было бы небезопасным, позволяя вам, разработчику, украсть пароли ваших пользователей. . Скорее всего, вам нужно будет предоставить пользователю какой-то способ предоставить свой пароль и хранить его в каком-то безопасном кеше, если вы не хотите, чтобы ему приходилось повторно вводить его.

Изменить: чтобы получить учетные данные для текущего идентификатора , используйте следующее: экземпляр класса c или a подкласс c. Например, если p равно класса Point Я хочу x.instanceOf (Point.class)

Гм ... Что? Что такое o, p и x?

Я хочу, чтобы он работал и для примитивов типы. Например, если x - целое тогда x.instanceOf (Integer.class), а также x.instanceOf (Object.class) должен быть правда.

Нет. Он даже не должен компилироваться. Примитивы не являются объектами, и вы не можете вызывать для них методы.

В любом случае, есть три вещи, одна из которых может определенно достичь того, чего вы хотите (они несколько отличаются в том, где именно применяется:

  • instanceof оператор, если вы знаете класс во время компиляции.
  • Class.isInstance () , если вы хотите сравнить класс объекта с классом, неизвестным во время компиляции.
  • Class.isAssignableFrom () , если вы хотите проверить возможность присваивания для двух объектов класса.
20
ответ дан 24 November 2019 в 08:48
поделиться

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

if(obj instanceof SomeClass) {
    // Do something
}

В руководстве по Java есть хороший пример этого оператора

4
ответ дан 24 November 2019 в 08:48
поделиться

Вы можете:

if (foo instanceof classNameYouWantToCheck) 
0
ответ дан 24 November 2019 в 08:48
поделиться

«Я хочу, чтобы он работал также и для примитивных типов. Например, если x - целое число, тогда x.instanceOf (Integer.class), а также x.instanceOf (Object.class) должны быть правда "

Почему? Примитивные типы и ссылочные типы полностью разделены. Примитивный int не является подтипом Integer или Object. Тип примитивного значения всегда известен статически во время компиляции, поэтому нет смысла проверять его тип. Конечно, вы можете упаковать примитивное значение, а затем проверить его тип:

(Integer)5 instanceof Integer

Но в чем будет смысл?

0
ответ дан 24 November 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: