Simples, você pode estar fazendo um wait baseado num timeout máximo. E gostaria que esse wait aguardasse somente até o restante do tempo.
Esse timeout tem de ser calculado, até porque o wait está sujeito a spurious wakeups como eu mesmo ressaltei.
Certo, char é unsigned. Mas é uma resposta simplista. O C te enviará inteiros e longs. O char também não é um tipo numérico, o que dificulta um pouco a impressão dele, por exemplo. Tanto que essa não é sugestão dos livros de rede. Eles sugerem ler num tipo maior, por exemplo, se o C enviar um int, ler o dado num long.
Entretanto, tanto a sua solução, quanto a dos livros, são workarounds. Você certamente terá que fazer código para driblar o problema do que seria necessário se os tipos simplesmente estivessem ali.
E o que não gosto é ter de recorrer a um workaround.
Não, não faço muitas aplicações no console. Esse foi apenas um exemplo. E essa é uma pergunta clássica de alunos que estão aprendendo java… Agora, mesmo o unix tem diversas aplicações que são estritamente controladas por console e não vejo porque usar o swing quando estiver fazendo uma aplicação que será um deamon ou coisa do gênero.
A sua solução também não retorna o local onde a aplicação está gravada, e sim o diretório onde o usuário iniciou a aplicação. São coisas diferentes. Tente implementar uma aplicação como o eclipse, que possui plugins em uma pasta específica, cada uma com seu arquivo manifest, e você saberá do que estou falando. Você simplesmente não tem como descobrir onde a pasta dos plugins está para ler os manifests e instancia-los com reflexão. A não ser recorrendo a um executável externo ou a perguntar para o usuário durante a primeira inicialização. Novamente, workarounds.
Nesse caso, eu gostaria de espera-los. É muito comum numa aplicação TCP existe um protocolo bem definido e controlado entre o cliente e o servidor. Você sabe exatamente quantos bytes virão, ou terá um campo length() em algum canto do procolo que te informará isso.
Quedas abruptas da conexão são controladas pelo TCP e deveriam ser notificadas através de exceção. Embora talvez não seja padrão no TCP (como o louds disse), não deixaria de ser um método interessante.
O que raios os generics tem a ver com o fall through? Fall through é propenso a erros e simplesmente não deveria estar lá. O próprio Joshua Bloch admite isso no Effective Java. Os generics, pelo contrário, não só evitam erros de casting como tornam a programação mais agradável. Não existe uma vantagem concreta em ter fall though em switchs, embora existam diversas desvantagens.
Acho que o caminho dessa discussão não deve ser tentar ridicularizar o argumento, como você fez ao falar dos Generics. Além de uma falta de respeito, não ajuda nada a defender o seu ponto de vista…
Sim, concordo. O swing é poderoso. Mas já deu uma olhada, por exemplo, na descrição do requisito que gerou o sorting no java 6? Dizia exatamente:
“Yes, I know it can be done on top of Swing (and that only
shows that Swing has been very well designed), but it is such
a common feature that IMO it should be a part of Swing.”
Confira você mesmo!
http://forum.java.sun.com/thread.jspa?threadID=788227&messageID=4478867
É com essa opinião que eu concordo. O swing é o máximo. Certamente é o mais flexível framework que eu já vi… mas certas coisas já deveriam estar lá, e não estão. Você pode dar uma espiadela na busca do GUJ e ver pessoas procurando por TreeTables, DropDownButtons e LookUpComboBoxes.
[quote=sergiotaborda]
Ela está ficando gorda porque os programadores não usam as classes que deveriam, não mudam o código quando algo fica deprecated. E é por causa deles que API é gorda.[/quote]
Essa foi uma frase injusta. Existem programadores descuidados, mas a razão não é essa. É porque existem sistemas legados e as empresas não podem ficar simplesmente investindo em modifica-los, especialmente quando esses funcionam bem. Pense, se você fosse dono de uma empresa (não a Sun, logicamente), tivesse um grande sistema feito a alguns anos atrás em java 1.3 por excelentes programadores, você investiria seu dinheiro para modificar um sistema que funciona bem, correria o risco de inserir erros nesse sistema, só por que a versão do Java mudou? A resposta é não. Quando o assunto é dinheiro, somos muito conservadores.
Se a API não ficar gorda a tendência é que as novas versões de java não sejam adotadas, não que alguém vá pagar pela modificação.
Veja, sem o código deprecated você não poderia migrar uma aplicação aos poucos.
A idéia desse tópico era deixar o “xiitismo” de lado e reconhecer que a linguagem que gostamos muito (sim, estou no GUJ pq adoro java) também tem seus problemas.