Java não consegue resolver método genérico

Digamos que eu tenho um método getX() em duas classes diferentes (A e B) e eu quero criar um método genérico estático para poder implementar em todas as classes que tenham que ter esse método. Exemplo:

public static <T> boolean seSobrepoe(T obj) {
   if (obj == null || (!obj.getClass().isInstance(A.class) && !obj.getClass().isInstance(B.class)))
       return false;
   return obj.getX() >= 0 && /*lógica*/; // o erro está aqui
}

Aparece a seguinte mensagem de erro:

Cannot resolve method 'getX()' in 'T'

Como posso resolver isso sem usar cast, já que o objetivo era ser um método genérico. É possível fazer isso?

Para o Java conseguir resolver método genérico, é preciso criar uma interface para que ele entenda que T tem uma função desejada para si. Exemplo:

public interface I {
   float getX();
}

public class A implements I {
   /* código da classe  */
   public float getX(){
       return 1.0f;
   }
}
public class B implements I {
   /* código da classe */
   public float getX(){
       return 2.0f;
   }
}

public static <T extends I> boolean seSobrepoe(T obj) {
   return obj.getX() >= 0 && /*lógica do seu código*/;
}

Ou então, num código sem um tipo da classe:

public static boolean seSobrepoe(I obj) {
   return obj.getX() >= 0 && /*lógica do seu código*/;
}