2011-11-13 30 views
-3

我有这样一段代码:如何处理Java传递值?我需要传递通过引用

DataTableFactory<Object> TempDataTableFactory = new DataTableFactory<Object>(); 
DataTable<Object> tempDataTable = TempDataTableFactory.getInstance(); 
tempDataTable = dataTable; 
ExecutedArguments e = new ExecutedArguments(); 
e.setDataTable(tempDataTable); 
e.setExecutedCommand(cmd); 
stack.addNewExecutedCommand(e); 
result = operation.execute(); 

现在我只想保持olddataTable执行之前。当我调试我的代码直到行result = operation.execute();没有问题。在那一行我改变了dataTable。但是因为tempDataTable指向dataTable它也会改变。但我不想tempDataTable改变。我怎样才能做到这一点?

+3

这与传递值或传递引用无关。 –

+0

@Brian我不确定这是真的。如果它是按值传递的,则整个对象将在调用过程中通过但未被修改,不是吗? – corsiKa

+1

Java仅*通过值传递。它就是这样发生的价值是一个内存地址;)除此之外...我真的不能对他的问题作出正面或反面的解释,为什么这与中国茶叶的价格有关:) –

回答

2

如果它支持克隆,我会使用tempDataTable.clone()。否则,你将不得不实现一个复制构造函数。

0

您将需要为tempDataTable创建一个新对象。

Here is a post有类似的问题。

+0

我已经在前两行创建了一个新的对象,除此之外,我创建了一个新的函数public void assignDataTable(DataTable realDataTable){ \t \t this.dataTable2 = realDataTable; \t \t} 和我设置dataTable2旧数据表,但我仍然不工作 – brtb