【问题标题】:How do I unwrap the original Java object that is created with createObject()如何解开使用 createObject() 创建的原始 Java 对象
【发布时间】:2011-10-10 17:38:21
【问题描述】:

我有一个用户定义的 Java 对象,我正在使用 JavaLoader 创建,我相信它使用 createObject() 创建将原始 Java 对象包装在 ColdFusion Java 代理对象中的对象。我试图将此对象作为参数传递给另一个类,但由于它包含在代理中,因此我收到类型不匹配错误。如何从 ColdFusion Java 代理中解开这个对象?

我正在尝试做的事情是这样的:

javaNote = instance.javaObject.createNote(anotherJavaObjectWrappedInJavaProxy);

我有两个使用 createObject 创建的 Java 对象,我想将其中一个对象作为参数传递给另一个 javaObject。

我也确实有这两个 Java 文件的源代码,所以如果我可以在 Java 类中解包它也可以。

【问题讨论】:

  • 出于什么目的,调试还是别的什么?
  • 我需要将此对象传递回另一个 Java 对象。
  • 你不需要做任何特别的事情,比如“展开”。 “按原样”传递对象应该可以正常工作。您能否发布错误消息和用于创建这两个对象的代码?
  • 当我“按原样”传入并对传入 java 的参数执行 getClass() 时,它以对象为前缀。例如,如果对象是 com.idl.MyObject,它会作为 object.com.idl.MyObject 传入,并且在尝试像这样进行转换时出现转换错误: var MyObject = (MyObject)argumentObject
  • 嗯,我一直都在做这种事情。但是如果没有看到错误和创建.. 代码,很难说你的情况出了什么问题。

标签: coldfusion


【解决方案1】:

这对我来说似乎工作得很好。我刚刚尝试了下面的代码

<cfset obj = createObject("java","ResizeImage")>
<cfdump var="#obj#"> 

而且它只创建 java 对象。请看下面的截图。

【讨论】:

  • Re: 它只创建 java 对象。 不要太相信 cfdump 如何格式化/显示事物。不管转储显示什么,仍然使用 JavaProxy。
【解决方案2】:

尝试使用 getClass()

<cfset obj = createObject("java","java.lang.StringBuilder") />
<cfdump var="#obj.getClass()#">`

【讨论】:

  • 这会让我得到类定义吗?我想要实际实例化的对象(及其重要部分的数据)
猜你喜欢
  • 2017-03-29
  • 2020-02-11
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2020-09-01
相关资源
最近更新 更多