我们很快就会从 ColdFusion 10 迁移到 ColdFusion 2016,并注意到我们在现有代码库中遇到了一些我们感到困惑的错误。
我们有几个组件,它们的方法有望返回特定类型。在 2016 之前的 ColdFusion 版本中,我们将指定包含该类型的组件的完整路径,以使其正常工作。
例如,这在 ColdFusion 2016 中不起作用:
public root.model.beans.MyObject function CreateMyObject()
{
// blah blah...
}
在 ColdFusion 2016 下运行相同的代码会产生错误"The value returned from the CreateMyObject function is not of type root.model.beans.MyObject"
(确实如此)。
这在 ColdFusion 2016中确实有效:
public MyObject function CreateMyObject()
{
// blah blah...
}
ColdFusion 10 中的情况正好相反——第一个示例有效,而第二个示例无效。
我的问题是为什么会这样?是否有一些设置可以控制这种行为?我担心尝试引用具有相同名称但路径不同的组件时会产生什么结果。如何区分 /root/model/beans/ 中的 Service.cfc 组件和 /root/widget/api/ 中的组件?
我想我们可以将所有受影响的返回类型更改为“任何”,但我们为什么必须这样做呢?
我确定我错过了一些非常简单的东西,并且希望能帮助我确定它是什么。谢谢。