函数返回的值

时间:2014-09-09 08:49:17

标签: java methods

假设我有以下课程:

class A{
    private Map<String, String> map;

    private Map<String, String> getMap(){
        return map;
    }

    private doActionOnMap(){
        Map<String, String> map = getMap(); //Is the map returned by getMap() 
                                            //refers to the private field map?
    }
}

也就是说,当某个值通过方法返回时,它将是另一个(原始的)副本,或者它将引用位于方法内的对象?

3 个答案:

答案 0 :(得分:2)

它是一个参考...当你想要一个克隆时,你必须自己实现它

答案 1 :(得分:1)

它是一种引用类型,因此您将获得的是对原始对象的引用。它不是副本。

我建议您查看参考和值类型之间的区别

Reference Types

答案 2 :(得分:0)

private Map<String, String> map;

map是一个类成员,它与该类的每个实例相关联。如果你写:

Map<String, String> myMap = a.getMap();

您将获得参考,而不是它的副本。如果您更改了它,那么在此类中使用它的所有方法都会更改它。