2013-09-26 3 views
1

У нас есть сервер, получающий reqests от CLI, и использовал очень простой POJO для хранения состояния, передаваемого в одном объекте. Этот объект, в конечном счете, сериализуется по сети с использованием OjbectStream на нашем сервере, который считывает его и использует данные для обработки запроса. Он работает отлично, как и ожидалось. Однако, когда я случайно открыть POJO сегодня, чтобы развернуть его, я заметил, что это выглядело так (написано по памяти, так как я не могу скопировать и вставить)Как переходные переменные, переносящие состояние по сети?

class param { 
    private transient String input; 
    private transient String output; 

    public param(String input, String output){ 
     this.input=input; 
     this.output=output; 
    } 

    public String getInput(){ 
     return input; 
    } 

    public String getOutput(){ 
     return output; 
    } 
} 

Как это POJO работу? если строки ввода и вывода, единственные переменные, которые они имеют, являются временными, тогда, когда он считывает сеть сервером, я не должен получать пустую строку ввода и вывода и, следовательно, не могу делать anythinhg? Я знаю, что это работает, я просто не могу понять, почему именно

ответ

1

Как это ПОЖО работает?

Большинство как класс также имеет writeObject и readObject методы, которые сериализации и десериализации эти поля.

, если входная и выходной строка, единственные переменный он имеет, являются как преходящее тогда, когда она считывается сеть на сервере не должен я получаю пустую входную и выходную строку и, таким образом, не в состоянии сделать anythinhg ?

Вы должны получать null иначе не пустую строку.

Я знаю, что это работает, я просто не могу понять, почему это делает

Скорее всего, это код, который вы пропустили. Или он не использует Java Serialization. Другие библиотеки сериализации могут игнорировать transient.

Смежные вопросы