大家好,希望你能帮忙。
我有一个返回我的自定义对象的方法。 该对象包含ArrayList和Strings。
我想创建一个从该方法返回的相同类型的新对象,该对象包含返回的相同信息。
我的问题是,我可以按照以下方式创建此对象的新实例吗?
public received_data_object XmlresponseParse(String Response) {
received_data_object received_data_object_instance = new received_data_object();
//Process some XML and add the item to the list.
received_data_object_instance.addTo_List("SomeText");
return received_data_object_instance;
}
然后从调用类方法,我可以说:
received_data_object received_data_object_otherInstance = new received_data_object();
received_data_object_otherInstance = XmlresponseParse("SomeXMLString");
我关心的是,我实际上是在创建对象的新实例,还是我将新对象传递给返回的对象的引用,因此两者现在都将被“链接”?
最好只创建我的新对象,然后访问返回对象中的getter并将值复制到新对象上?
我很担心,因为一切都说你应该从像这样的类中的方法中分离你的代码,但同时,所有东西似乎都是通过引用原始对象来复制的。
提前致谢。
答案 0 :(得分:2)
您已表达XmlresponseParse
(请更改为xmlResponseParse
方法名称应以小写字母开头)包含其他代码声音,例如在received_data_object
中设置其他变量(请将此处重命名为{{ 1}}对象的第一个字母应为大写,每个java标准camalHumpNotation。
本答案应基于您ReceivedDataObject
方法的责任。现在你给方法两个职责是
xmlResponseParse
个对象这就是决定的方式:
调用方法中ReceivedDataObject
的其他字段变量是否设置在ReceivedDataObject
之外?如果是这样,你应该创建一个调用方法的实例并将其传递给你的xmlResponseParse
方法,并在你的方法中操作该对象的实例(即不要在{{xmlResponseParse
中使用new
1}})强>
这看起来像。
xmlResponseParse
或全部 public void callingMethodSetSomeFields() {
ReceivedDataObject receivedData = new ReceivedDataObject();
// set some of the values for ReceivedDataObject in calling method
//now set a ton of values for ReceivedDataObject using xmlResponseParse method
xmlResponseParse(receivedData, "SomeXMLString");
}
public void xmlResponseParse(ReceivedDataObject receivedDataObject, String response) {
//in here we are setting a ton of fields for receivedDataObject
//notice we are operating on the instance of ReceivedDataObject that was passed to us.
receivedDataObject.addToList(response);
}
内的ReceivedDataObject
字段变量?如果是这样,请使用XmlresponseParse
在调用方法中创建XmlresponseParse
的实例(即在调用方法中不使用ReceivedDataObject
)
看起来像这样。
new
此外,这种情况下你可以吃蛋糕也可以吃。如果您确定需要两种类型的public void callingMethodDoesntSetAnyFields(){
ReceivedDataObject receivedData = xmlResponseParse("SomeXMLString");
}
public ReceivedDataObject xmlResponseParse(String response) {
//in here we are setting all of the fields for receivedDataObject
//notice we are creating an instance of ReceivedDataObject.
ReceivedDataObject receivedData = new ReceivedDataObject();
receivedData.addToList(response);
return receivedData;
}
。让我们说callingMethod1使用第一个版本,一些调用method2使用第二个版本。您可以覆盖xmlResponseParse
方法,因为它们具有不同的签名,所以两者都有。
答案 1 :(得分:0)
下面提到的代码创建了一个新对象(第一个对象):
received_data_object received_data_object_instance = new received_data_object();
以下代码将导致在方法(第二个对象)中创建另一个新对象:
received_data_object_otherInstance = XmlresponseParse(“SomeXMLString”);
当上述调用返回时,received_data_object_otherInstance将指向第二个对象。您的第一个对象不会在任何地方使用,也不需要。
因此,您只需要这一行,它应该可以正常工作:
received_data_object received_data_object_instance = XmlresponseParse(“SomeXMLString”);