不确定如何完成此equals方法

时间:2015-08-20 22:51:17

标签: java equals equals-operator

有人可以帮我解决这个问题吗?我已经尝试查找其他的例子来找到我需要做的事情并继续遇到调用和EqualsBuilder的东西,这是我需要使用的吗?如果它既不满足IF,我还需要再次调用equals吗?

以下代码包含类定义和不完整的方法定义。 equals方法用于比较建筑物。 如果建筑物具有相同的名称和楼层数(但不一定是同一建筑物),则返回true,否则返回false。

public class Building {      
    private String name;      
    private int noOfFloors;

    public boolean equals (Object rhs) {          
        if (this == rhs) { 
            return true; 
        }          
        if (!(rhs instanceof Building)) { 
            return false; 
        }          
        Building b = (Building) rhs;     

        // missing return statement      
    }  
}

3 个答案:

答案 0 :(得分:2)

您现在唯一需要测试的是两个对象的字段。如果它们相等,那么你应该返回true,如果其中至少有一个不是那么你应该返回false。

由于您的字段为intString,因此您可以将==用于整数字段,将.equals()用于字符串字段。

这样的事情应该可以正常工作:

if(this.name.equals(b.name) && this.noOfFloors == b.noOfFloors){
    return true ;
}
else{
    return false;
}

答案 1 :(得分:2)

package org.chrisolsen.notificationtest;

import ...

public class TestService extends Service {

    public class TestBinder extends Binder {
        public void stop() {
            TestService.this.stopForeground(true);
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d("TestSErvice", "onDestroy");
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return new TestBinder();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("TestSErvice", "onHandleIntent");
        Context c = getApplicationContext();

        Intent activityIntent = new Intent(c, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(
                c, 0, activityIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
        builder.setContentIntent(pendingIntent)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentText("The Content Text")
                .setOngoing(false)
                .setAutoCancel(true)
                .setPriority(Notification.PRIORITY_LOW)
                .setContentTitle("The content title");

        startForeground(1, builder.build());

        return super.onStartCommand(intent, flags, startId);
    }

}

答案 2 :(得分:0)

在instanceOf测试之后,您想要将对象的字段与另一个对象进行比较。像Objects.deepEquals()这样的东西应该很适合你。