Ответы пользователя по тегу C
  • Перевод из C на Java. Указатели?

    @Maccimo
    В 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());
    	
    	}
    
    }
    
    


    Но вариант «а» всё же более идеологически верный.
    Ответ написан
    1 комментарий