Yes, you should do this for the compiler to do the check and prevent it from overwriting the wrong method (perhaps with the wrong signature), "configuration "the correct method and possibly calling the method in the wrong class. With it you avoid the misunderstanding by a typo, for example. With it you will get a warning indicating the problem.
warning There is no obligation to solve the problem in fact for the program to compile, but as always one should consider warnings as if they were mistakes, let's say it's "morally" mandatory. Either way it is easier to keep a code with explicit information than your intention is to override the method.
This is true for methods declared in interfaces as well.
More information about why this annotation exists and how it works can be obtained in this answer .