「オブジェクトクラス」というのがjimbeさんが指摘しているとおり「Comparable インターフェースのCompareTo メソッドのパラメータになっている Object クラスのこと」であるという前提で回答します。違っていれば、この回答は無視してください。
結論から言うとそのComparableの実装の仕方は大変古いです。どれぐらい古いかというと、17年ぐらい古いです。
2004年9月30日リリースされたJava 5(J2SE 5.0, 内部バージョンは1.5.0)で総称型(ジェネリクス)という機能が追加されました。Java 5より前は、質問のコードのように汎用的なソートプログラムと対応のインターフェースを作る場合、引数等にObject型を用いて内部でキャストするしかありませんでした。このObject型を使用する方法は実行時にキャストに失敗する(実行時エラーになる)可能性があるなど、プログラマー側に注意が必要なものでした。そこで新たに総称型という機能が追加されました。総合型を用いればキャストを必要とせず、型の不一致はコンパイル時にわかるようになります。総称型はJavaだけではなくC#等の他の言語でも採用されています。
総称型を用いて書き直すと下記のようになります。Object
となっている部分が無くなっているのがわかると思います。キャストしていたところ((Person)obj
)も無くなったので、実行時に型の不一致でエラーになる可能性も無くなり、より安全なコードになります。
Java
1public class Ex {
2 public static void main(String[] args) {
3 Person[] p = {
4 new Person("Ar", 26, 172),
5 new Person("Co", 40, 170),
6 new Person("Al", 37, 168),
7 new Person("Go", 21, 180),
8 };
9 Baburu.sort(p);
10 for (int i = 0; i < p.length; i++) {
11 p[i].show();
12 }
13 }
14}
Java
1public interface Comparable<T> {
2 int compareTo(T obj);
3}
Java
1class Person implements Comparable<Person> {
2 private String name;
3 private int age, height;
4
5 public Person(String name, int age, int height) {
6 this.name = name;
7 this.age = age;
8 this.height = height;
9 }
10
11 public void show() {
12 System.out.println(name + ":" + "age.." + age + ", height.." + height);
13 }
14
15 public int compareTo(Person obj) { return age - obj.age; }
16}
Java
1class Baburu {
2 public static <T extends Comparable<? super T>> void sort(T[] data) {
3 for (int i = data.length - 1; i > 0; i--) {
4 for (int j = 0; j < i; j++) {
5 if (data[j].compareTo(data[j + 1]) > 0) {
6 var work = data[j];
7 data[j] = data[j + 1];
8 data[j + 1] = work;
9 }
10 }
11 }
12 }
13}
最後に、書籍かサイトか何かを参考にされたのだと思いますが、総称型で書かれていない時点でその参考にされた物も大変古いため、捨てることを推奨します。Javaも進化しており、ラムダ式やvar
やレコード等と言った機能が追加されています。これからJavaを学ぶのであれば、最新のLTSバージョンである17あたりをターゲットに学んだ方がいいかと思います。