На самом деле, невозможно иметь параметры в java, но вы можете обойти метод, заставляющий метод принимать разыменование для неизменяемой строки и примитивов, либо написав универсальный класс, где неизменяемый является универсальным с 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());
}
ставит: Validation = True
ставит: остальные элементы равны 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)'.
Он работает и работает хорошо, пока экземпляр [] [] или [] создается в памяти первым хотя бы с одним элементом.