首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java对象的coldfusion 9

使用java对象的coldfusion 9
EN

Stack Overflow用户
提问于 2012-11-12 11:04:12
回答 2查看 605关注 0票数 0

我目前正在使用jodatime库,在coldfusion中尝试使用它时会遇到问题。

我下载了最新的jodatime2.1版本,将jar文件放在本地驱动器上的一个文件夹中,并指示我的coldfusion管理员查看和设置页面下的类路径中的文件夹。

在大多数情况下,它是有效的。但有时我会遇到这样的事情:

代码语言:javascript
复制
local.oTestZone = createObject('java','org.joda.time.DateTimeZone').init('Europe/London');

这应该与以下内容相匹配:然而,构造函数在coldfusion中出现了一个错误,它说:

无法找到接受类型( java.lang.String )参数的类org.joda.time.DateTimeZone的构造函数。

但是,当我做这样的事情时,它会很好地工作:

代码语言:javascript
复制
local.oToZone   = createObject('java','org.joda.time.DateTimeZone').forID('Europe/London');

forID匹配的

我的java实现遗漏了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-12 11:30:56

DateTimeZone(String id)构造函数被标记为受保护的(需要3次读取JavaDoc才能发现),所以CF将无法调用它。

在我看来,JodaTime希望您使用静态方法之一来构造实例,所以第二个示例可能是正确的方法。

票数 4
EN

Stack Overflow用户

发布于 2012-11-12 11:34:15

您正在处理抽象类和受保护的构造器。

受保护的构造函数意味着只有同一包中的子类或类才能调用该构造函数。因此,即使您提供了正确的参数,构造函数对您的代码也不可用。

ColdFusion文档有以下几个窍门:

尽管cfobject标记加载类,但它不会创建实例对象。只有静态方法和字段可以在调用cfobject之后立即访问。

这就是forID工作的原因;它是一种静态方法。

要持久访问对象,必须使用init函数,因为它返回对对象实例的引用,而cfobject不返回。

这和前面的陈述是为什么像getOffset这样的方法在这种情况下不能工作的原因。

我对此还不太熟悉,不知道是否有一个类可以实例化,从而使您能够访问构造函数,但希望其他人能够加入。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13342555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档