Ответ 1
Вы можете создать вспомогательный метод
public static T as(Object o, Class<T> tClass) {
return tClass.isInstance(o) ? (T) o : null;
}
User user = as(obj, User.class);
Как мы знаем, С# предоставляет ключевое слово AS, которое автоматически выполняет проверку того, является ли объект типом, и если он есть, он затем передает его в нужный тип else, который дает null.
public class User
{
}
....
Object obj = someObj;
User user = obj As User;
...
Здесь, в приведенном выше примере, Объект obj может быть типа User или какого-либо другого типа. Пользователь либо получит объект типа User, либо null. Это связано с тем, что ключевое слово As в С# сначала выполняет проверку и, если возможно, выполняет литье объекта в результирующий тип.
Итак, есть ли какое-либо ключевое слово в Java, которое эквивалентно ключевому слову AS С#?
Вы можете создать вспомогательный метод
public static T as(Object o, Class<T> tClass) {
return tClass.isInstance(o) ? (T) o : null;
}
User user = as(obj, User.class);
нет, вы можете проверить с помощью instanceof
, а затем отбросить, если он соответствует
User user = null;
if(obj instanceof User) {
user = (User) obj;
}
Нет ключевого слова, но для полноты я дам вам эквивалент в 1 слот:
User user = obj instanceof User ? (User) obj : null;
(Возможно, вам не обязательно иметь явное приведение, я не уверен.)