是否有人能够解释以下问题要求我做什么。我不需要知道代码,只是对Coldfusion的不同解释会很好,所以我可能能够理解他们要求我写的内容。
据我所知,ColdFusion没有“属性”,因此必须使用CFC进行模拟。
创建具有以下特征的类
创建一个方法,创建问题4中指定的类的新实例:(您不必编写任何代码来测试该过程)
答案 0 :(得分:2)
这是家庭作业,但需要在沉闷的一天休息一下。
下面是使用<cfproperty/>
隐式getter和setter的ColdFusion 9特定实现。 CFC会覆盖整数和双成员的setter,以执行数据类型验证ColdFusion本身不会执行。
<强> BrownPeanut.cfc 强>
<!--- accessors="true" causes CF9 to set data in the "variables" scope --->
<cfcomponent output="false" accessors="true">
<cfproperty name="MyDouble" type="numeric" />
<cfproperty name="MyInteger" type="numeric" />
<cfproperty name="MyString" type="string" />
<cffunction name="init" output="false" access="public" returntype="BrownPeanut" hint="Constructor">
<cfargument name="MyDouble" type="numeric" required="false" default="1.234"/>
<cfargument name="MyInteger" type="numeric" required="false" default="10"/>
<cfargument name="MyString" type="string" required="false" default="hello world"/>
<cfset setMyDouble(arguments.myDouble)>
<cfset setMyInteger(arguments.MyInteger)>
<cfset setMyString(arguments.MyString)>
<cfreturn this/>
</cffunction>
<cffunction name="setMyDouble" output="false" access="public" returntype="void"
hint="Overrides default setter">
<cfargument name="MyDouble" type="string" required="true"/>
<!--- data type checking because ColdFusion does not natively make the distinction --->
<cfset var jDouble = createObject("java", "java.lang.Double").init(arguments.myDouble)>
<cfif jDouble.toString() NEQ arguments.myDouble>
<cfthrow type="java.lang.IllegalArgumentException" message="Invalid double value '#arguments.MyDouble#'">
</cfif>
<cfset variables.MyDouble = arguments.MyDouble>
</cffunction>
<cffunction name="setMyInteger" output="false" access="public" returntype="void"
hint="Overrides default setter">
<cfargument name="MyInteger" type="string" required="true"/>
<!--- data type checking because ColdFusion does not natively make the distinction --->
<cfif NOT isValid("integer",arguments.MyInteger)>
<cfthrow type="java.lang.IllegalArgumentException" message="Invalid integer value '#arguments.myInteger#'">
</cfif>
<cfset variables.myInteger = arguments.myInteger>
</cffunction>
</cfcomponent>
<强> BrownPeanut.cfm 强>
<cffunction name="WriteToDebugWindow" output="true" access="public" returntype="void" hint="">
<cfargument name="data" type="string" required="true"/>
<cfset var local = structNew()/>
<!--- implementation goes here --->
<cfoutput>#arguments.data#<br /></cfoutput>
</cffunction>
<cfset BrownPeanut = new BrownPeanut()>
<cfset writeToDebugWindow(BrownPeanut.getMyDouble())>
<cfset writeToDebugWindow(BrownPeanut.getMyInteger())>
<cfset writeToDebugWindow(BrownPeanut.getMyString())>
答案 1 :(得分:0)
因此,您需要一个将值初始化为 this 范围的init方法,然后返回 this 。返回类型应该像“path.to.yourCFC”。您将需要单独的getter和setter方法,以及一个将更新它们的方法。后一种方法应该只调用各个setter。