Can you explain the difference between List<Object> and List<?>?

Need:

  • In Java, the need for a type parameter arises when you want to create a class that can operate on objects of various types while maintaining type safety. Without generics, you would have to cast objects manually, which could lead to runtime errors.

What is it?:

  • A type parameter in a generic class is a placeholder for a data type that is provided when an instance of the class is created. It allows the class to be parameterized with different types, ensuring type safety at compile time.
  • Example:
public class Box<T> {
    private T value;

public void set(T value) {
this.value = value;
}

public T get() {
return value;
}


}  

  • In this example, T is the type parameter, which can be replaced by any actual data type (e.g., Integer, String) when you create an instance of Box.

How is it used?:

  • When you create an instance of a generic class, you specify the actual type to replace the type parameter.
  • This ensures that only objects of the specified type can be passed to the class methods, eliminating the need for explicit casting.
  • Example:
Box<String> stringBox = new Box<>();
stringBox.set("Hello");
System.out.println(stringBox.get()); // Outputs: Hello
Box<Integer> intBox = new Box<>();  

intBox.set(100);

System.out.println(intBox.get()); // Outputs: 100

  • In the first instance, T is replaced with String, and in the second instance, T is replaced with Integer.