Java:通过引用传递int的最佳方式
我有一个parsing函数,它parsing字节缓冲区中的编码长度,它将parsing的长度作为int返回,并将一个索引作为整数arg存入缓冲区。 我希望函数根据它被parsing的内容来更新索引,也就是想通过引用来传递索引。 在C我只是传递一个int * 。  Java中最简洁的方法是什么? 我目前正在考虑通过索引参数。 作为一个int[] ,但它有点难看。 
 您可以尝试使用Apache Commons库中的org.apache.commons.lang.mutable.MutableInt 。 语言本身没有直接的做法。 
 这在Java中是不可能的。 正如你所build议的一种方法是传递一个int[] 。 另一个会有一个小的类,例如IntHolder包装一个int 。 
将字节缓冲区和索引包装到一个ByteBuffer对象中。 ByteBuffer封装了缓冲区+位置的概念,并允许您从索引位置进行读取和写入,并随着更新而进行更新。
你不能在Java中通过引用来传递参数。
 你可以做的是将你的整数值包装在一个可变的对象中。 使用Apache Commons的MutableInt是一个不错的select。 另一种稍微混淆的方式是使用你所build议的int[] 。 我不会使用它,因为它不清楚为什么你在一个单细胞数组中包装int 。 
 请注意, java.lang.Integer是不可变的。 
 你可以使用java.util.concurrent.atomic.AtomicInteger 。 
你可以devise这样的新课程:
 public class Inte{ public int x=0; } 
以后你可以创build这个类的对象:
 Inte inte=new Inte(); 
 那么你可以传递inte作为你想传递一个整型variables的参数: 
 public void function(Inte inte) { some code } 
所以为了更新整数值:
 inte.x=value; 
为了获得价值:
 Variable=inte.x; 
你可以创build一个Reference类来包装原语:
 public class Ref<T> { public T Value; public Ref(T value) { Value = value; } } 
然后你可以创build带有Reference的函数作为参数:
 public class Utils { public static void Swap<T>(Ref<T> v1, Ref<T> v2) { T temp = t1.Value; t1.Value = t2.Value; t2.Value = temp; } } 
用法:
 Ref<Integer> x = 2; Ref<Integer> y = 9; Utils.Swap(x, y); System.out.println("x is now equal to " + x.Value + " and y is now equal to " + y.Value"; // Will print: x is now equal to 9 and y is now equal to 2 
希望这可以帮助。