Consider this code:
package Prova;
import java.util.ArrayList;
public class Prova
{
    private ArrayList<String> people;
    public Prova() {
        people=new ArrayList<String> ();
    }
    public ArrayList<String> getPeople (){
        return people;
    }
    public static void main(String[] args) {
        Prova p=new Prova();
        p.go();
    }
    public void go(){
        ArrayList<String> temp=getPeople();
        temp.add("jack");
        System.out.print(getPeople());
    }
}
It prints "jack".
Why? Doesn't this violate encapsulation? How to return it by value?
 
     
     
     
     
     
    