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:
- Je tento druh syntaxe vôbec možný?
- má
@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 akvalue == 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.