Могу ли я использовать объект в качестве переменной метода в Java?

Абсолютно новичок в кодировании здесь, поэтому, пожалуйста, будьте как можно более дружелюбными новичками! Например, я недавно узнал о классах и предметах в школе. Кроме того, извините за неправильное наименование / путаницу:)

У меня было много случаев, когда я пишу метод, но хочу вернуть из него более одной переменной. Я подумал: "Что, если я создал класс, содержащий все переменные, с которыми я работаю, а затем возвратил только его экземпляр из моего метода?

Пример:

public class Mathematics {
    int number1;
    int number2;
}

public class MyClass {
    public static void main (String [] args);


    public static <class?> MyMethod (<class Mathematics?>)
       //in here, the method works with numbers one and two, and then returns them, like so:
      return Mathematics;
    }
}

Теперь имейте в виду, что это НЕ ТОЧНО, что я хочу сделать, но по сути, я хочу использовать класс в качестве "контейнера переменных", используемого в методе в другом классе. Если это не способ сделать это, я хотел бы знать, что это такое (и, пожалуйста, сделайте это как можно проще:)).

Спасибо!

1 ответ

Да, вы на правильном пути! Это общий шаблон кодирования, позволяющий решить именно эту проблему, как вернуть несколько значений.

public static Mathematics myMethod(int param1, String param2, float param3) {
    Mathematics result = new Mathematics();

    result.number1 = param1 * 2;
    result.number2 = param2.length();

    return result;
}

Примечания:

  1. Тип возврата Mathematics,
  2. Параметры могут быть любыми. Они не должны быть связаны с Mathematics класс, хотя они могли бы быть.
  3. Во-первых, создать новый объект с new Mathematics() и дать ему произвольное имя.
  4. Затем присвойте каждому полю значение по своему усмотрению.
  5. Наконец, верните эту переменную.

Кроме того, я изменил это с MyMethod в myMethod соответствовать стандартному соглашению об именах Java.


Если затем вы хотите работать с этим объектом в другом методе, этот метод должен принять Mathematics объект как параметр.

public static void otherMethod(Mathematics values) {
    System.out.println("number1 is " + values.number1);
    System.out.println("number2 is " + values.number2);
}

Почему этот метод принимает его как параметр, а первый возвращает его? Разница в том, хочет ли метод получить набор значений или вернуть его. Если он хочет получить значения, ему нужен параметр типа Mathematics, Если он хочет вернуть значения вызывающей стороне, он должен иметь тип возврата Mathematics,

Другими словами, являются ли значения входными или выходными?

Кстати, они не являются взаимоисключающими. Метод может принимать и возвращать объект. Пример:

/**
 * Returns half of the input values. Does not modify the input object.
 * Instead, a new object is returned.
 */
public static Mathematics halfOf(Mathematics input) {
    Mathematics output = new Mathematics();

    output.number1 = input.number1 / 2;
    output.number2 = input.number2 / 2;

    return output;
}

Это можно было бы назвать так:

Mathematics values  = myMethod(42, "foobar", 3.14);
Mathematics altered = halfOf(values);

System.out.println("Half of " + values.param1 + " is " + altered.param1);
System.out.println("Half of " + values.param2 + " is " + altered.param2);
Другие вопросы по тегам