You cannot. The closest thing you can do is give Defaults
a private constructor
private Defaults() {}
...and provide factory methods only for the allowed classes:
public static Defaults<String> stringDefaults() { return new Defaults<>(); }
public static Defaults<Integer> integerDefaults() { return new Defaults<>(); }
public static Defaults<Double> doubleDefaults() { return new Defaults<>(); }