Caro Wagner,

Para falar a verdade não importa muito se é ou não um tipo primitivo.

A palavra reservada 'void' tem o propósito de indicar, para o compilador e para o 'runtime', que um método não retorna um parâmetro. Só isso e nada mais do que isso. Contudo, por simetria e facilidade de leitura podemos dizer que void é um tipo, mas não queremos necessariamente dizer que 'void' é um tipo.

Já a classe 'Void' é uma classe como outra qualquer. Sabemos que um tipo primitivo (através das suas repectivas classes 'wrapper'), a interface de uma classe e uma inteface sempre definem um tipo [1]. Então, a classe 'Void', apesar de não ser possível instanciá-la (The Void class is an uninstantiable placeholder class), define um tipo. Mas, a verdadeira utilidade da classe 'Void' está no conceito de reflexão [2]. Reflexão nos permite ter acesso às informações de uma classe (metadados de uma classe) em tempo de execução. Através da reflexão é possível ter informações sobre os campos, métodos e construtores de uma classe carregada em memória. Ou seja, em tempo de execução de uma aplicação Java, é possível obter informações sobre quais métodos uma classe tem e, a partir de um dado método, pode-se ter acesso aos parâmetros recebidos e retornado por este método. Para cada parâmetro de entrada do método, é possível saber o seu tipo. O mesmo tb é possível para o parâmetro de retorno do método. Quando um método retorna um objeto fica óbvio qual o tipo retornado (um tipo primitivo via a sua classe wrapper, uma classe ou uma interface). E quando o método não retorna nada? Vc tb precisa saber quando um método não retorna algo durante o processo de reflexão de uma classe. Por simetria, já que a reflexão pode informar o tipo retornado via a definição de uma classe, é necessário ter uma classe que defina um tipo e indique que o método em questão não retorna nada. Neste caso estamos falando da classe 'Void'. Várias informações também podem ser obtidas por intermédio da classe Class [4]. Neste último caso o processo é chamado de 'instrospecção', mas a classe 'Void' já não é mais necessária.

Para maiores detalhes:

[1].

http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html
http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#44365
http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html#238680
http://java.sun.com/j2se/1.3/docs/guide/reflection/spec/java-reflection.doc.html#1705

[2].

http://java.sun.com/j2se/1.3/docs/guide/reflection/index.html

[3].

http://java.sun.com/j2se/1.3/docs/guide/reflection/spec/java-reflectionTOC.doc.html

[4].

http://java.sun.com/j2se/1.3/docs/api/java/lang/Class.html

É isso aí ... Enjoy ...
[]´s

Spock

Wagner Menezes wrote:
Pessoal,

surgiu uma duvida bastante intrigante, se em alguma prova tiver a seguinte questao:
void eh um tipo primitivo?
a resposta eh verdadeira ou falsa?
a duvida surgiu pois no livro "Thinking in Java" (segunda edicao), pagina 68, indica que void eh um tipo primitivo.
Porem no "The Java Language Specification - second edition", pagina 286, tem:
"Note that the Java programming language does not allow a "cast to void"—void is not a type—so the traditional C trick of writing an _expression statement such as..."
e mais ainda na API de Java referente a classe Void tem o seguinte:
"The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the primitive Java type void."
fica entao a questao void eh tipo primitivo?
se void eh tipo primitivo, a classe Void eh uma Wrapper Class?

aguardo respostas,

Wagner


------------------------------------------------------------------------
*Busca Yahoo! <http://br.busca.yahoo.com/>*
O melhor lugar para encontrar tudo o que você procura na Internet



------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------

Responder a