toString返回所有对象的getter方法

时间:2012-04-18 11:22:06

标签: oop coldfusion tostring object-to-string

我正在使用ColdFusion,但我有兴趣知道其他语言如何处理这个问题。

是否有更好的方法可以返回所有对象变量(getter)而无需在对象上编写大量的toString()方法。

variables.oCity = createObject("component", "_lbr._core._locations.city").init();

variables.oCity.setName(request.parameters.sCityName);
variables.oCity.setCountryID(request.parameters.nLocationCountryID);

if(request.parameters.nStateID eq 0){
    variables.stArgs = {};
    variables.stArgs.sState = request.parameters.sLocationCountry;
    variables.stArgs.nCheckCountryID = request.parameters.nCountryID;
    variables.oCity.setStateID = application.stObj.oLocationBusiness.getState(argumentCollection=variables.stArgs).getStateID();
} else {
    variables.oCity.setStateID = request.parameters.nStateID;
}

我的代码看起来像那样。我想要的是输出我刚刚设置的所有内容(以及对象默认的任何内容),而无需编写一个连接所有各种变量的巨型toString:

  

对象:StateID = 12,Name =“Argentina”,CountryID = 32,CityID = 44

我的心告诉我这不太可能。

2 个答案:

答案 0 :(得分:4)

这取决于您如何在对象中存储变量。我通常将所有变量存储在variables.instance结构中。然后我创建一个get(),只返回variables.instance结构:

public struct function get(){
    return Duplicate(variables.instance);
}

答案 1 :(得分:1)

如果您在CF9 +中使用cfpropertyaccessor=truepersistent=true,则cfc的转储将返回没有getter=false的所有属性。