ObjectとObjectsの違いに混乱!初心者の学びの記録
こんにちは!
プログラミングを始めたばかりの初心者ですが、先日「Object」と「Objects」の違いに関して、大いに混乱した経験をシェアしたいと思います。
同じように混乱される方もいるかもしれないので、私の発見が少しでも役立てば嬉しいです。
基本文法を学び終えて…その先で起きた事件
先日、基本文法を一通り学び終え、「equals」のオーバーライドについて学んでいたときのことです。
Javaでは、すべてのクラスは暗黙的にObjectクラスを継承しています。
そのため、新しいクラスを作成する際、Objectが提供するメソッド(例えばequals()やhashCode())を正しくオーバーライドする必要があります。
そのとき、私は「Array Listを持つクラス」を作っていて、そのクラスでequalsをどうオーバーライドするかを考えていました。
謎の「Objects.equals()」が登場!
自分なりにequals()をオーバーライドしたコードを書き、書籍で答えを確認してみると、その中でObjects.equals()というメソッドが使われていることに気づきました。
「え?今、自分はObject.equalsをオーバーライドしようとしているのに、なぜここでObjects.equals()が出てくるの?」
まったく理解できず、頭が混乱。コードをにらみつけること数十分…。
ついに気づいた!ObjectとObjectsの違い
いろいろ調べたり考えたりした結果、「Object」と「Objects」はまったく別物だということに気づきました。
Objectクラス
・すべてのクラスが暗黙的に継承する親クラス。
・equals()やhashCode()などの基本メソッドを提供。
Objectsクラス
・Javaのutilパッケージに属する便利なクラス。
・開発者がコードを書く際の補助的なメソッドが多く含まれている。
さらに調査:Objects.equals()の役割
さらにObjects.equals()についてAPIリファレンスを確認したところ、このメソッドは次のような機能を持つことが分かりました:
• 引数の内容を等価判定するメソッド。
• 2つのオブジェクトを比較し、等価かどうかを判定。
• nullの処理も内部で行うため、手動でnullチェックをする必要がない。
実際のコードで確認してみると、Objects.equals()は非常に便利なメソッドであり、これを使うことで、より簡潔なコードを書けることが分かりました。
初心者が陥りやすいポイントとは?
今回の混乱の原因は、『「Object」と「Objects」という名前が非常に似ていること』でした。
特にプログラミングを始めたばかりで、分からないことが多い状況だと、クラス名の末尾にある「s」を見落としてしまいがちです。
「Object」と「Objects」を混同したことで迷子になりましたが、これをきっかけにJavaのutilパッケージやAPIリファレンスを確認する良い機会になりました。
学びのまとめ
今回の経験を通じて、以下のことを学びました:
1. Javaの基本クラス(Object)と便利クラス(Objects)は完全に別物。
2. APIリファレンスを積極的に活用することで、混乱を解決できる。
3. たとえ些細なことでも混乱するのは当たり前。それをきっかけに深く学べる!
これからも初心者の視点で学びながら気づいたことを発信していきます。同じような場所でつまずいた方のヒントになれば嬉しいです!