I've been reading about annotations lately, and I'm a bit confused. I've used the annotation @NotNull but I don't really know how it checks if the variable is not null. No where in the code do I see anything checking values for null. That makes sense because it's an interface, so where does the actual processing happen and why isn't this location specified in the code? The examples I've seen usually just make an annotation that takes values, but doesn't do anything else, so I'm confused as to where the implementation occurs.
Where does the processing of an annotation happen?
182 Views Asked by gsgx At
1
There are 1 best solutions below
Related Questions in JAVA
- How to use meshgrid with large arrays in Matplotlib?
- Enforcing that inputs sum to 1 and are contained in the unit interval in scikit-learn
- scikit-learn preperation
- Python KNeighborsClassifier
- How to interpret scikit's learn confusion matrix and classification report?
- svmlight / libsvm format
- Scikit-learn: overriding a class method in a classifier
- Memory Error with Classifier fit and partial_fit
- Difference between weka tool's correlation coefficient and scikit learn's coefficient of determination score
- Peak fitting with gaussian mixure model (Scikit); how to sample from a discrete pdf?
Related Questions in ANNOTATIONS
- How to use meshgrid with large arrays in Matplotlib?
- Enforcing that inputs sum to 1 and are contained in the unit interval in scikit-learn
- scikit-learn preperation
- Python KNeighborsClassifier
- How to interpret scikit's learn confusion matrix and classification report?
- svmlight / libsvm format
- Scikit-learn: overriding a class method in a classifier
- Memory Error with Classifier fit and partial_fit
- Difference between weka tool's correlation coefficient and scikit learn's coefficient of determination score
- Peak fitting with gaussian mixure model (Scikit); how to sample from a discrete pdf?
Related Questions in NOTNULL
- How to use meshgrid with large arrays in Matplotlib?
- Enforcing that inputs sum to 1 and are contained in the unit interval in scikit-learn
- scikit-learn preperation
- Python KNeighborsClassifier
- How to interpret scikit's learn confusion matrix and classification report?
- svmlight / libsvm format
- Scikit-learn: overriding a class method in a classifier
- Memory Error with Classifier fit and partial_fit
- Difference between weka tool's correlation coefficient and scikit learn's coefficient of determination score
- Peak fitting with gaussian mixure model (Scikit); how to sample from a discrete pdf?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Annotation is just a metadata, no more no less. When you want to specify some details about the class you put annotations on it. Think about them (to some extent) as an alternative to the old well known XML way to define metadata.
Now, its obvious that someone reads your XML and runs the code that makes something with the metadata. The same happens with annotations: a framework to which annotation belongs to is responsible to read the annotation and make something with this information. In the case of
@NotNull
, its hibernate-validator project. The API exposed by java allows to access the information in the annotations by reflection (the classes likejava.lang.Class
,Method
,Field
, and so on). So somewhere inside hibernate validator there is a code that goes to your class, reads the annotations by reflection and checks whether the class adheres these annotations. These annotation usually have retention policy 'runtime' which means that they're preserved in the bytecode and loaded along with the class that carries these annotations.There are also annotations that should be processed by Java compiler. Like
@Deprecated
,@SuppressWarnings
and so on. The benefit of having such annotation is that you can find some code issues during the compilation phase.You can also put the annotation processors and 'plug' them during the compilation phase, buts its entirely different story.
Hope this clarifies a little the usage of annotations