从PHP的角度将对象转换为其接口

时间:2015-03-29 01:59:14

标签: java php casting

我正在尝试将(Java)的Java代码重写(出于教育原因)。它在这个存储库中。我的问题是第42行here。我们可以看到以下代码:

if (this.getBoard().getTile(boxNextPlace) instanceof ContentOperations && 
    ((ContentOperations)this.getBoard().getTile(boxNextPlace)).getContent() == null)
{
    ...

作为第一步,我们检查this.getBoard().getTile(boxNextPlace)是否返回实现ContentOperations接口的对象。如果是这样,我们转到第二步,再次调用this.getBoard().getTile(boxNextPlace)链,但这次我们将返回值转换为ContentOperations,然后调用getContent方法进行进一步处理(在本例中为将它与null .getContent()==null进行比较,但这与我的问题无关。)

据我所知,在这种情况下,转换是对某个未被对象实现的调用方法的某种保护,但已经由this.getBoard().getTile(boxNextPlace) instanceof ContentOperations条件验证,该对象属于ContentOperations类型。

所以问题是:如果证明它是必需的类型,为什么要将对象转换为必要的接口呢?或许我对这种铸造保护功能的理解是错误的?

1 个答案:

答案 0 :(得分:0)

编写Java代码的人在第42行进行了instanceof检查,但他们忽略了在第55行再次执行一次。如果getTile()确实可以返回不是{的对象{1}},会出现ContentOperations。我假设您在PHP中不需要任何额外的逻辑来考虑不同的返回类型。