Re: Timeout question on a socket thread
RVic wrote:
But say I declare something as final, and initialize it to null in the
declaration (so I can access it in y finally block), can I
subsequently assign it
final OutputStream output = null;
try {
output = socket.getOutputStream(); //is this legitimate?
}finally{
output = null; //is this legitimate?
No: The `final' variable cannot be assigned to after initialization.
You've snipped away so much context (all of it) that the original
problem has been lost, but it seemed that you had a variable that
needed to be non-final because there were multiple assignments to it,
but simultaneously needed to be final because you wanted to use its
value inside an inner class. A solution is to use *two* variables,
one non-final (which you can change as often as you like) and one
final (which you'll initialize with the value of the first once you've
made up your mind):
Answer answer; // non-final
// ... lots of code that assigns to `answer', changes its mind
// and assigns a different value, uses a lifeline and assigns
// yet again, dithers back and forth a bit, and eventually
// decides that `answer' is the Final Answer ...
final Answer finalAnswer = answer;
button.addActionListener(new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// ... code that uses the value of `finalAnswer'
}
});
--
Eric.Sosman@sun.com