Подтвердить что ты не робот

Есть ли в Java ключевое слово, похожее на ключевое слово "AS" для С#

Как мы знаем, С# предоставляет ключевое слово AS, которое автоматически выполняет проверку того, является ли объект типом, и если он есть, он затем передает его в нужный тип else, который дает null.

public class User

{

}

....

Object obj = someObj;

User user = obj As User;

...

Здесь, в приведенном выше примере, Объект obj может быть типа User или какого-либо другого типа. Пользователь либо получит объект типа User, либо null. Это связано с тем, что ключевое слово As в С# сначала выполняет проверку и, если возможно, выполняет литье объекта в результирующий тип.

Итак, есть ли какое-либо ключевое слово в Java, которое эквивалентно ключевому слову AS С#?

4b9b3361

Ответ 1

Вы можете создать вспомогательный метод

public static T as(Object o, Class<T> tClass) {
     return tClass.isInstance(o) ? (T) o : null;
}

User user = as(obj, User.class);

Ответ 2

нет, вы можете проверить с помощью instanceof, а затем отбросить, если он соответствует

User user = null;
if(obj instanceof User) {
  user = (User) obj;
}

Ответ 3

Нет ключевого слова, но для полноты я дам вам эквивалент в 1 слот:

User user = obj instanceof User ? (User) obj : null;

(Возможно, вам не обязательно иметь явное приведение, я не уверен.)