bugl
bugl
HomeLearnPatternsPathsSearch
HomeLearnPatternsPathsSearch

Loading lesson path

Learn/Java/Java Advanced
Java•Java Advanced

Java Annotations

Flash cards

Review the key moves

1/4
Core idea

What is the main idea behind Java Annotations?

Lesson checks

Practice each idea before moving on

Short Mimo-style checks built from this lesson's code, terms, and sequence.

1Quick choice

Which statement best captures the main point of this lesson?

2Fill blank

Complete the missing token from the example code.

___ Animal {
3Order

Put the learning moves in the order that makes the concept easiest to apply.

@Deprecated Annotation
@Override Annotation
Built-in Annotations

Annotations are special notes you add to your Java code. They start with the @ symbol.

They don't change how your program runs , but they give extra information to the compiler or tools.

Built-in Annotations

Java includes several built-in annotations. Here are some of the most commonly used:

AnnotationDescription
@OverrideIndicates that a method overrides a method in a superclass
@DeprecatedMarks a method or class as outdated or discouraged from use
@SuppressWarningsTells the compiler to ignore certain warnings

@Override Annotation

The @Override annotation helps the compiler check that a method really overrides a method from a superclass.

It's not required, but it's highly recommended because it helps catch errors.

In this example, we clearly indicate that we are overriding a method:

Example

class Animal {
  void makeSound() {
    System.out.println("Animal sound");
  }
}
class Dog extends Animal {
  @Override
  void makeSound() {
    System.out.println("Woof!");
  }
}

If you accidentally write the wrong method name (e.g. makesound() ), the compiler will show an error like:

Example

class Animal {
  void makeSound() {
    System.out.println("Animal sound");
  }
}
class Dog extends Animal {
  @Override
  void makesound() { // Typo here! System.out.println("Woof!");
  }
}
public class Main {
  public static void main(String[] args) {
    Animal myDog = new Dog();
    myDog.makeSound();
  }
}

That's the power of @Override - it prevents silent mistakes.

If you try to remove the @Override line in the example above, the compiler won't warn you, and the method won't override anything. Your program may still run, but it could behave unexpectedly because the intended method was never actually overridden.

@Deprecated Annotation

The @Deprecated annotation warns developers not to use a method because it may be removed or replaced in the future:

Example

public class Main {
  @Deprecated
  static void oldMethod() {
    System.out.println("This method is outdated.");
  }
public static void main(String[] args) {
  oldMethod(); // This will show a warning in most IDEs
}
}

Even though the method runs and prints the message, most IDEs or compilers will show a warning like this:

@SuppressWarnings Annotation

The @SuppressWarnings annotation tells the compiler to ignore specific warnings, like "unchecked" or "deprecation":

Example

import java.util.ArrayList;
public class Main {
  @SuppressWarnings("unchecked")
  public static void main(String[] args) {
    ArrayList cars = new ArrayList();
    cars.add("Volvo");
    System.out.println(cars);
  }
}

Using raw types like ArrayList without specifying a type (e.g. ArrayList<String> ) usually causes an "unchecked" warning.

The annotation @SuppressWarnings("unchecked") tells the compiler to ignore that warning. This is useful when working with old code or when you're sure the operation is safe.

However, instead of hiding the warning, you can fix it like this:

ArrayList<String> cars = new ArrayList<>();

This approach is type-safe and avoids the need for suppression.

Previous

Java Generics

Next

Java Regular Expressions