Передача ссылки в качестве параметра в Android

Я новичок в Java/ Android. Я разработчик a c/ C++. Могу ли я знать, как передать ссылку в качестве параметра в Android. Иллюстративный пример кода c показан ниже

void main()
{
  int no1 = 3, no2 = 2, sum = 0;
  findsum( no1, no2, sum );
  printf("sum=%d", sum );
}

void findsum( int no1, int no2, int& sum )
{
  sum = no1 + no2;
}

пожалуйста, предложите мне решение

Спасибо

3 ответа

Решение

Вы не можете передать int как ссылку в Java. int является основным типом, его можно передавать только по значению.

Если вам все еще нужно передать переменную int в качестве ссылки, вы можете обернуть ее в изменяемый класс, например, массив int:

void findsum( int no1, int no2, int[] sum )
{
  sum[0] = no1 + no2;
}

В любом случае, я настоятельно рекомендую вам реорганизовать ваш код, чтобы он был более объектно-ориентированным, например:

class SumOperation {
   private int value;

   public SumOperation(int no1, int no2) {
      this.value = no1 + no2;
   }

   public int getReturnValue() { return this.value; }
}

В Java нет передачи по ссылке.

Вот как я решил эту проблему:

      // By using a wrapper class.
// This also works with Class objects.
class IntReturn {
    public int val;
}

// For example:
class StringReturn {
    public String val;
}

class Main {
    public static void main (){
        IntReturn iRtn = new IntReturn();
        
        if(tryAdd(2, 3, iRtn)){
            System.out.println("tryAdd(2, 3): " + iRtn.val);
        }
    }

    public static boolean tryAdd(final int a, final int b, final IntReturn iRtn){
        iRtn.val = a + b;

        return true;  // Just something to use return
    }
}

Для этого у меня есть личная библиотека таких классов. Лямбда-выражения - еще одна причина для этих классов, поскольку вам нужна «конечная» переменная, чтобы получить значение из лямбда-выражения, кроме оператора return.

Другие вопросы по тегам