1. ホーム
  2. java

[解決済み] Java equals for a Class. .equalsと同じか?

2023-07-28 04:58:45

質問

を行うことは可能でしょうか? == の上に Class 変数の代わりに equals という変数に置き換えて、同じ結果を期待できますか?

例えば

Class clazz = xyz;

ケースAです。

if(clazz == Date.class) {
// do something
}

ケースBです。

if(Date.class.equals(clazz)) {
// do something
}

ケースAとケースBは機能的に同じですか?

どのように解決するのですか?

クラスはfinalなので、equals()をオーバーライドすることはできません。 equals()メソッドはObjectを継承しており、その内容は以下の通りです。

public boolean equals(Object obj) {
    return (this == obj);
}

そうです、クラスやオーバーライドしない型では同じことなのです。 equals(Object)

2つ目の質問に答えると、各ClassLoaderはクラスを一度だけロードでき、与えられた完全修飾名に対して常に同じClassを提供します。