Java 是我的导师吗;s接口';问题出在哪里?

Java 是我的导师吗;s接口';问题出在哪里?,java,interface,Java,Interface,我的任务是实现一个名为“CarInterface”的接口。我的课程将被称为“汽车”,并在另一个名为“卡特斯特”的课程中进行测试 但是,我对界面中的一个方法有一个小问题 此方法称为“equals”,它接受一个CarInterface参数。在CarTester main中,他似乎希望此方法检查make、model、color和year数据是否相同(仅这些属性)。尽管如此,CarInterface没有任何方法来获取这些信息!现在我处于停顿状态,思考他的界面是否是问题所在 我首先认为可以将CarInte

我的任务是实现一个名为“CarInterface”的接口。我的课程将被称为“汽车”,并在另一个名为“卡特斯特”的课程中进行测试

但是,我对界面中的一个方法有一个小问题

此方法称为“equals”,它接受一个CarInterface参数。在CarTester main中,他似乎希望此方法检查make、model、color和year数据是否相同(仅这些属性)。尽管如此,CarInterface没有任何方法来获取这些信息!现在我处于停顿状态,思考他的界面是否是问题所在

我首先认为可以将CarInterface参数转换为Object,然后将其传递给this.equals(…)。那时我才意识到这里出了问题

(以下是接口代码的一个片段) (接口甚至没有获取VIN的方法)

/**
*检查呼叫车辆和参数车辆是否具有相同的状态(VIN除外)
*前提条件:调用车和参数车都已完全初始化
*后置条件:无变化
*@param pCarObject
*@返回
*如果调用车辆和参数车辆除VIN外具有相同的状态,则返回true,否则返回false
*/
公共布尔等于(CarInterface pCarObject);
以下是完整的接口代码:

包装接口包装;
公共接口接口
{
/**
*此模块将汽车的颜色更改为参数的颜色。
*前提条件:保存汽车颜色的状态变量
*后置条件:汽车颜色的值现在设置为参数中包含的值。
*@param pColor
*/
公共空隙涂料(线状pColor);
/**
*给汽车油箱加满油
*前提条件:汽车有一个油箱
*后置条件:汽车油箱已满
*@返回
*用于加注油箱的燃油量
*/
公共双油箱();
/**
*为汽车的油箱添加燃油
*前提条件:汽车有一个油箱
*后置条件:汽车油箱可能添加了燃油
*@返回
*负数,表示油箱仍将消耗的燃油量
*未使用燃油量的正值,如果为0,则表示燃油刚刚充满油箱
*/
公用双燃料箱(双燃料);
/**
*将汽车对象的状态变量转换为字符串表示形式
*前提条件:所有状态变量都已初始化
*后置条件:无变化
*@返回
*年份、品牌、型号、颜色、VIN
*/
公共字符串toString();
/**
*检查呼叫车辆和参数车辆是否具有相同的状态(VIN除外)
*前提条件:调用车和参数车都已完全初始化
*后置条件:无变化
*@param pCarObject
*@返回
*如果调用车辆和参数车辆除VIN外具有相同的状态,则返回true,否则返回false
*/
公共布尔等于(CarInterface pCarObject);
/**
*按预定的距离和速度驾驶汽车。
*前提条件:车辆的行程状态变量已初始化
*后置条件:汽车的燃油与行驶的距离和速度成比例减少,如果距离和速度过大,则会耗尽。里程表和行程里程表会随着行驶里程的增加而更新。
*@返回
*如果汽车在剩余燃油的情况下行驶一段距离,则为true;如果汽车燃油耗尽,则为false
*/
公共汽车();
/**
*行车里程表
*前提条件:无
*后条件:状态不变
*@返回
*行程里程表的两倍值,精确到英里的十分之一
*/
公共双GetTripometer();
/**
*将行程里程表里程设置为0.0
*前提条件:无
*后条件:行程里程表设置为0.0
*/
公共三里程表();
/**
*获取里程表里程
*前提条件:无
*后置条件:状态不变
*@返回
*里程表的两倍值,精确到英里的十分之一
*/
公共双里程计();
/**
*检索以加仑为单位的燃油油位
*前提条件:燃油油位已初始化
*后置条件:状态不变
*@返回
*带十进制值的燃油液位(加仑)
*/
公共双getFuelLevel();
/**
*汽车的状态设置为保持行驶速度和以该速度行驶的距离
*前提条件:无
*后置条件:汽车状态包含行驶距离和行驶速度信息
*@param-pAverageSpeed
*@param pDrivingDistance
*/
公共交通出行(双倍路面速度、双倍行驶距离);
}

据我所知,
equals(CarInterface pCarObject)
方法应该能够从接口中解包
pCarObject
中存在于
toString()
中的信息,删除VIN,并与来自该接口的信息进行比较。这是一种令人讨厌的方式,但我想它是有效的

基于@racraman所说的,这样的东西在专业环境中永远不会飞(至少永远不会飞)。
toString()
专门用于生成人类可读的输出,而不是用于内部传输数据。即使是一个痛苦的
getDetails()
方法返回隐藏数组中的所有内容,也比使用
toString()
更容易接受

处理这个问题的理想方法是使用getter和setter,这样你只需要花时间获得你所需要的,不多也不少。如果getter需要做一些工作来将值转换为输出,那么这尤其有用,这样您就不会浪费时间来转换刚刚得到dropp的输出