实际上,在 java 中不可能有 out 参数,但是您可以通过编写一个泛型类,其中不可变是泛型value 和 setter 和 getter 或使用数组,其中元素 0(长度为 1)是提供它首先实例化的值,因为在某些情况下您需要返回多个值,而必须编写一个类只是为了返回它们该类仅被使用,只是浪费文本并且不能真正重复使用。
现在是 C/C++ 和 .Net(单声道或 MS),它敦促我 Java 至少不支持对原语的取消引用;所以,我改用数组。
这是一个例子。假设您需要创建一个函数(方法)来检查数组中的索引是否有效,但您还想在索引验证后返回剩余的长度。让我们在 c 中将其称为 'bool validate_index(int index, int arr_len, int&rem)'。在 java 中执行此操作的一种方法是“Boolean validate_index(int index, int arr_len, int[] rem1)”。 rem1 仅表示数组包含 1 个元素。
public static Boolean validate_index(int index, int arr_len, int[] rem1)
{
if (index < 0 || arr_len <= 0) return false;
Boolean retVal = (index >= 0 && index < arr_len);
if (retVal && rem1 != null) rem1[0] = (arr_len - (index + 1));
return retVal;
}
现在,如果我们使用它,我们可以获得布尔返回和余数。
public static void main(String[] args)
{
int[] ints = int[]{1, 2, 3, 4, 5, 6};
int[] aRem = int[]{-1};
//because we can only scapegoat the de-ref we need to instantiate it first.
Boolean result = validate_index(3, ints.length, aRem);
System.out.println("Validation = " + result.toString());
System.out.println("Remainding elements equals " + aRem[0].toString());
}
puts:验证 = True
puts: 剩余元素等于 2
数组元素要么指向栈上的对象,要么指向堆上对象的地址。因此,即使对于数组,也绝对可以将其用作取消引用,方法是将其实例化为 myArrayPointer = new Class[1][] 然后将其传递给数组,因为有时您不知道数组的长度会是多少直到调用通过类似 'Boolean tryToGetArray(SomeObject o, T[][] ppArray)' 的算法,这与 c/c++ 中的 'template bool tryToGetArray (SomeObject* p, T** ppArray)' 或C#'bool tryToGetArray(SomeObject o, ref T[] array)'。
只要 [][] 或 [] 首先在内存中使用至少一个元素进行实例化,它就可以正常工作。