l'unico metodo che mi viene in mente per passare oggetti per valore è utilizzare il clone()

Example:
codice:
public static void scambia(Integer i, Integer j){
  Integer k=i; i=j; j=k;
}

public static void main(String args[]){
   Integer n=new Integer(4);
   Integer n1=new Integer(2);

   scambia(n,n1); //ha effetto siccome gli oggetti sono per address
   scambia(n.clone(),n1.clone());  //non ha effetto siccome è per value
}