первые два предложения if гарантируют, что строки считаются больше целых.Вторые два предложения if делегируют сравнение между строками и целыми числами реализации compareTo()
этих классов, так что они упорядочены как обычно.
Обратите внимание, что это очень, очень плохой дизайн иметь такой код, где переменная может быть «типа X или Y» - именно потому, что она вынуждает вас писать такой код.
Вместо этого выберите один тип и преобразуйте его в / из этого типа.где необходимо.