Generics Java

import java.io.Serializable;
class Base {
}
class Sub1 extends Base implements Serializable {
  public void run() {
  }
}
class Sub2 extends Base implements Serializable {
  public void run() {
  }
}
public class TypeInference {
  static  T infer(T t1, T t2) {
    return null;
  }
  public static void main(String[] args) {
    Base base = infer(new Sub1(), new Sub2());
    Serializable runnable = infer(new Sub1(), new Sub2());
  }
}