Фактический тип возвращаемого файла - coldfusion.image.Image. Вы были почти там с java.lang.Class - это фактический экземпляр java.lang.Class, который представляет, что такое coldfusion.image.Image. Чтобы узнать, с каким классом мы имеем дело, вам нужно задать java.lang.Class несколько вопросов:
<cfdump var="#ImageNew()#"/>
<cfdump var="#GetMetaData(ImageNew())#"/>
<cfdump var="#GetMetaData(ImageNew()).getCanonicalName()#"/>
<cfdump var="#GetMetaData(ImageNew()).getName()#"/>
<cfdump var="#GetMetaData(ImageNew()).getSimpleName()#"/>
Итак, основываясь на ответах, которые я получил, я попробовал несколько сценариев:
<cffunction name="GetImage" access="private" output="false" returntype="Struct">
<cfreturn ImageNew()/>
</cffunction>
<cffunction name="GetImage" access="private" output="false" returntype="coldfusion.image.Image">
<cfreturn ImageNew()/>
</cffunction>
<cffunction name="GetImage" access="private" output="false" returntype="Image">
<cfreturn ImageNew()/>
</cffunction>
Однако на практике все они не дали мне покоя во время выполнения:
The value returned from the GetImage function is not of type Struct.
The value returned from the GetImage function is not of type coldfusion.image.Image.
The value returned from the GetImage function is not of type Image.
Я думаю, что причина их неудачи в том, что ColdFusion, вероятно, компилирует мой код без импорта в пространство имен coldfusion.image. Конечно, он использует это с ImageNew (), но это, вероятно, просто импорт в что-то вроде coldfusion.globalFunctions. Таким образом, мой CFC понятия не имеет, что такое в действительности coldfusion.image. Image.
Я думаю, что вы застряли с использованием returntype="Any"
- извините. Мне нравится поддерживать свои типы в разработке, а затем отключать проверку типов в производственной среде, поэтому я слышу вас.