/ / Môžu byť konečne použité anotácie @NonNull v jave 8 za behu? - java, anotácie, java-8

Môže sa @NonNull anotácie konečne použiť v java 8 na runtime? - java, anotácie, java-8

Som si vedomý, že existuje veľa tém @NonNull anotácie už, väčšina z nich je však teraz označená ako Java 8, čo znamená, že API sa už nemení.

Táto otázka je ďalej odôvodnená skutočnosťou, že Anotácie k typom sú teraz súčasťou Java 8.

Chcel by som teda nasledujúci kód:

public BaseChecker(final @NonNull File directory, final @NonNull Consumer<File> fileConsumer) {
this.directory = directory;
this.fileConsumer = fileConsumer;
}

Mám dve otázky:

  1. Je tento druh syntaxe vôbec možný?
  2. @NonNull konečne pracovať za behu?

Pod pojmom runtime mám na mysli:

  • Ak je anotovaný Object value, potom by malo hádzať NullPointerException ak a iba ak value == null.
  • Toto správanie je podobné Objects.requireNonNull(value).

odpovede:

2 pre odpoveď č. 1

Áno, táto syntax je možná. ale nie, nefunguje tak, ako navrhujete. anotácie nemajú „fungovať“ vôbec, sú to dekorácie, ktoré je možné skontrolovať.

Bolo by však triviálne implementovať tento typ správania pomocou AOP. pozrite sa na AspectJ.