Pull to refresh
13
Karma
0
Rating

Java Developer

  • Followers 3
  • Following

Java 16 — новые синтаксические возможности языка

Меня натолкнул на эту мысль вот этот абзац из JEP:
Sealing a class restricts its subclasses. User code can inspect an instance of a sealed class with an if-else chain of instanceof tests, one test per subclass; no catch-all else clause is needed. For example, the following code looks for the three permitted subclasses of Shape:

Shape rotate(Shape shape, double angle) {
if (shape instanceof Circle) return shape;
else if (shape instanceof Rectangle) return shape.rotate(angle);
else if (shape instanceof Square) return shape.rotate(angle);
// no else needed!
}


Пересмотрел JEP еще раз — в нем есть и такое утверждение:
For example, consider this code from earlier:
Shape rotate(Shape shape, double angle) {
if (shape instanceof Circle) return shape;
else if (shape instanceof Rectangle) return shape.rotate(angle);
else if (shape instanceof Square) return shape.rotate(angle);
// no else needed!
}
The Java compiler cannot ensure that the instanceof tests cover all the permitted subclasses of Shape. For example, no compile-time error message would be issued if the instanceof Rectangle test was omitted.


Немного запутанное описание, но, похоже, вы правы.

Java 16 — новые синтаксические возможности языка

Да, в этом случае не нужен — запускал разные примеры и флаг остался от предыдущего запуска.

Java 16 — новые синтаксические возможности языка

Она может быть и внутри и за пределами — зависит от условия if.
Например, тут она будет внутри:
if (obj instanceof String s) {
    System.out.println(s);
}

А тут за пределами:
if (!(obj instanceof String s)) {
  throw new Exception();
}
System.out.println(s);

Java 16 — новые синтаксические возможности языка

Попробовал — ошибка та же (missing return statement). Начинает работать только после добавления ветки «else».

Java HotSpot JIT компилятор — устройство, мониторинг и настройка (часть 1)

Я, возможно, не до конца понимаю вопрос, но попытаюсь ответить. По моим представлениям JVM состоит из трех основных частей: Runtime, GC и JIT компилятора. Краткий обзор JVM и его рантайма можно найти в главе 3 книги Java Perfomance, авторы Charlie Hunt и Binu John. О работе GC можно почитать в любой из книг, перечисленных в списке литературы. Плюс можно заглянуть в спецификацию JVM docs.oracle.com/javase/specs/jvms/se14/jvms14.pdf. У меня статей на эти темы пока нет, но, возможно, они появятся в будущем.

Spring Security — пример веб приложения с авторизацией по протоколу OAuth2 через BitBucket

Спасибо, что ознакомились со статьей и представили свои замечания. Согласен, что OAuth2 — протокол авторизации, но ведь в статье так и написано. Статья и правда задумывалась как введение в OAuth2 для новичков и не претендует на пример идеального кода (возможно стоило указать это в статье сразу).
  1. В реализации используется 5-я версия и она действительно отличается от 4-й, хотя в целом конфигурирование приведенных вещей очень похоже и там и там.
  2. Согласен, в данном случае создавать его руками было не обязательно. Хотя Bitbucket не является стандартным провайдером, поэтому все тоже самое пришлось бы сделать в application.properties. Вариант с application.properties не подойдет, если нужно динамически создавать ClientRegistration в зависимости от каких-либо условий. В данном случае пример был вырезан из более крупного приложения и переносить это в application.properties руки не дошли.
  3. Насчет своей реализации UserService можно и согласиться и нет. Поддерживаю, что у этого решения есть свои минусы, но это решение использует стандартное API SS, поэтому тоже имеет право на существование.

Spring Security — пример веб приложения с авторизацией по протоколу OAuth2 через BitBucket

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

Information

Rating
Does not participate
Registered
Activity