4

MyClas の equals 関数を作成する必要があります。

public class MyClass
{
boolean equals(Object value)
  {
    if (... value is type of MyCLass ...)
      {
        return= ... check conditions...;
      } else return false;
  }
}

この目的のために、Object の値が MyClass の型であるかどうかを知る必要があります。作り方は?

4

7 に答える 7

5

valueタイプが使用されているかどうかを確認するにはMyClass

 if( value instanceof MyClass) 
于 2013-08-29T12:47:33.517 に答える
1

instanceof演算子はそれを決定するために使用されます。中置式なので、こんな風に使って…

(value instanceof MyClass)
于 2013-08-29T12:47:53.383 に答える
1
    public class MyClass
    {
       boolean equals(Object value)
      {
           if (value instanceof  MyCLass)
           {
              return= ... check conditions...;
           } else return false;
       }
   }
于 2013-08-29T12:48:39.500 に答える
1

できるよ

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    MyClass myClass = (MyClass) o;
    //Your logic

アプローチinstanceof代わりにも使えます。getClass()

于 2013-08-29T12:50:40.553 に答える
0

RTTI ( Real Time Type Identification ) は一部の人にとってコードの臭いと見なされていますが、2 つの代替手段があり、1 つはinstanceof演算子を使用することです。

if(value instanceof MyClass)

一方、クラスの本格的なメソッドを使用して、 2 つのオブジェクトを指定すると、それらが同じ階層に属しているかどうかを判断できます ( IMOClassよりもはるかに強力です)。instanceof

if(value.getClass().isAsignableFrom(getClass()))

thisこの 2 番目のアプローチは、任意の種類のオブジェクトが与えられた実行時に、 value がまったく同じクラスであるか、現在のクラス ( ) のスーパークラス/スーパーインターフェースであるかを判別します。コンパイル時に参照型を知る必要があるため、ここがisAsignableFrom優れています。instanceof

于 2013-08-29T13:00:07.653 に答える
0
value instanceof ClassName

instanceofキーワードはチェックします。ここでClassName のvalue aです。はいの場合は true を返し、それ以外の場合は返しますsubclassfalse

于 2013-08-29T12:52:29.667 に答える