首页 > 解决方案 > 使用 this 或传递参数对象有什么区别

问题描述

假设我有一个方法:

public void boolean isEndingStation(Station station, BusLine busLine){
...
}

这是在一个BusLine类里面。如果我只使用调用函数的对象而没有使用关键字的BusLine参数,有什么区别吗?this

我的意思的例子:

public void boolean isEndingStation(Station station){
this.[code]
...
}

像第一个示例一样传递参数似乎是多余的,并且总体上使方法看起来更混乱。

标签: javamethodsparametersthis

解决方案


它是否“冗余”取决于它的使用方式。

如果您要询问BusLine所提供的特定实例是否Station是“终点站”,那么是的,这是多余的,而且非常混乱。

同样,如果您询问 aStation是否是给定 的“终点站”,也会令人困惑BusLine,例如,station.isEndingStationFor(aBusLine)采用 aStation是没有意义的。

例如,如果它是一个静态方法,Station.isStationEndStation(aStation, aBusline)那么它是有意义的。

这是 Java 风格的 OOP 旨在做的事情之一:在类的实例上发送消息(“调用方法”)。在这些函数内部,使用实例数据对该消息做一些有意义的事情。

isEndingStation对进行方法调用甚至可能是有意义的Station,例如,

public void boolean isEndingStation(Station station) {
    return station.isEndFor(this);
}

最终,有意义的事情取决于功能所在的位置、您希望如何访问它、系统的架构方式等。


推荐阅读