Мой вопрос будет таким: Почему method
не возвращает что-то?Вместо того, чтобы задавать аргумент in / out?
Но если вы абсолютно точно абсолютно уверены, что должен иметь аргумент in / out, что является совершенно другим вопросом, тогда трюк с массивами подойдет.С другой стороны, это не менее неуклюже, но другой способ - передать ссылку на объект:
public class Foo {
private String value;
public Foo(String v) {
this.value = v;
}
public String getValue() {
return this.value;
}
public void setValue(String v) {
this.value = v;
}
}
// ....
public void method(String in, Foo inOut) {
inOut.setValue(in);
}
(или, конечно, просто сделать value
общедоступным.) Видите?Я сказал, что это не менее неуклюже.
Но я бы снова спросил: не может method
вернуть что-нибудь?И если ему нужно вернуть несколько вещей, не может ли он вернуть экземпляр объекта со свойствами для этих вещей?
Не по теме: Это одна из областей, где мне действительно нравитсяC # подход.Один из аргументов против аргументов in / out заключается в том, что они неясны в тот момент, когда вы вызываете функцию.Таким образом, C # делает это понятным, указав ключевое слово при объявлении функции и при ее вызове.В отсутствие такой синтаксической помощи я бы избегал «симуляции» аргументов in / out.