Wie kann ein Factory-Pattern mit Generika in Java implementiert werden?

Ich habe eine generische Schnittstelle Handler

public interface Handler<T> {
  void handle(T obj);
}

Ich kann n Implementierungen dieser Schnittstelle haben. Nehmen wir an, ich habe vorerst zwei Implementierungen. Einer, der String-Objekte behandelt, und ein anderer, der Date @ behande

public class StringHandler implements Handler<String> {
  @Override
  public void handle(String str) {
    System.out.println(str);
  }
}

public class DateHandler implements Handler<Date> {
  @Override
  public void handle(Date date) {
    System.out.println(date);
  }
}

Ich möchte eine Factory schreiben, die Handler-Instanzen basierend auf dem Klassentyp zurückgibt. Etwas wie das

class HandlerFactory {
  public <T> Handler<T> getHandler(Class<T> clazz) {
    if (clazz == String.class) return new StringHandler();
    if (clazz == Date.class) return new DateHandler();
  }
}

Ich erhalte folgenden Fehler in dieser Fabrik:

Type Mismatch: Kann nicht konvertieren vonStringHandler zuHandler<T>

Wie kann ich das beheben?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage