В Java параметры в методы передаются по значению. В случае примитивных типов передаётся само значение, в случае классов — ссылка на экземпляр. out-параметров нет.
Варианты:
а) Переписать реализацию так, что бы выходных параметров не было. Например, создать класс, где оригинальная фунция decode и все вспомогательные станут методами, а параметры — полями класса с getters/setters.
б) Применить следующую уловку:
public class ByRef<T> {
private T ref;
public ByRef(T ref) {
set(ref);
}
public T get() {
return this.ref;
}
public void set(T ref) {
this.ref = ref;
}
}
Пример использования:
public class Foo {
public static void bar(ByRef<String> value) {
value.set("Good bye!");
}
public static void main(String... args) {
ByRef<String> message = new ByRef<String>("Hello!");
System.out.println("Before call: " + message.get());
bar(message);
System.out.println("After call: " + message.get());
}
}
Но вариант «а» всё же более идеологически верный.