Могу ли я использовать объект в качестве переменной метода в 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;
}
Примечания:
- Тип возврата
Mathematics
, - Параметры могут быть любыми. Они не должны быть связаны с
Mathematics
класс, хотя они могли бы быть. - Во-первых, создать новый объект с
new Mathematics()
и дать ему произвольное имя. - Затем присвойте каждому полю значение по своему усмотрению.
- Наконец, верните эту переменную.
Кроме того, я изменил это с 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);