模拟传递引用的主要方法是传递包含值的容器。
static void makeAThree(Reference<Integer> ref){ ref.set(3);}public static void main(String[] args){ Reference<Integer> myInt = new Reference<>(4); makeAThree(myInt); System.out.println(myInt.get());}
由于在Java中,它 引用
到由值(对象本身是从来没有在全部通过)传递的对象,设置
ref于
3在
makeAThree变化相同的对象则提到
myInt的
main()。
免责声明:
Reference这不是您可以直接使用现成的Java的类。我在这里将其用作其他任何对象类型的占位符。这是一个非常简单的实现:
编辑public class Reference<T> { private T referent; public Reference(T initialValue) { referent = initialValue; } public void set(T newVal) { referent = newVal; } public T get() { return referent; }}
这并不是说修改方法的参数是一个好习惯。通常,这将被视为副作用。通常,最佳做法是将方法的输出限制为返回值和
this(如果该方法是实例方法)。修改参数是设计方法的一种非常“
C”的方式,并且不能很好地映射到面向对象的编程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)