Java pasa por problema de referencia [duplicado]

Posible duplicado:
¿Java pasa por referencia?

Tengo esta clase aquí:

public class Cat { 
    private String catNum;

    private static Cat cat1;
    private static Cat cat2;


    public Cat(String catNumber) {
        catNum = catNumber;
    }

    public static void change(Cat cat1, Cat cat2) {  
        Cat temp = cat1;
        cat1 = cat2;
        cat2 = temp;
    }

    public String toString() {
        return "cat number: " + catNum;
    }

    public static void main(String[] args) {
        cat1 = new Cat("1");   
        cat2 = new Cat("2");  
        System.out.println("cat1=" + cat1);  
        System.out.println("cat2= " + cat2);
        change(cat1, cat2);
        System.out.println("cat1=" + cat1);  
        System.out.println("cat2= " + cat2);
    }
}

Me gustaría obtener elchange() función de trabajo. Sé que es un problema acerca de pasar objetos por referencia, pero no estoy seguro de cómo solucionarlo. Alguien por favor ayuda.

Respuestas a la pregunta(3)

Su respuesta a la pregunta