Hoje, quando eu estava verificando o código -fonte, descobri a classe java.lang.void. Qual é a função disso?
Confira primeiro através do código -fonte
pacote java.lang;/** * A classe {@code void} é uma classe de espaço reservado desinstalável para manter uma referência * ao objeto {@code class} que representa a palavra -chave java * void. * * @author não contabilizado * @since jdk1.1 * /public finalclass void { /** * o objeto {@code class} que representa o pseudo-tipo correspondente a * a palavra-chave {@code void}. */ @Suppresswarnings ("desmarcado") Public Static Final Class <Void> type = (Class <Void>) Class.getPrimitiveClass ("void"); / * * A classe vazia não pode ser instanciada. */ private void () {}}É encontrado no código -fonte que esta classe é final, não pode ser herdada e o construto é privado e não pode ser novo.
Então, qual é a função desta categoria?
Aqui está o código -fonte da classe java.lang.integer primeiro
Todos sabemos que a classe Wrapper de int é java.lang.integer
A partir disso, podemos ver que java.lang.integer é a classe Wrapper de Int.
Da mesma forma, através do seguinte código -fonte de java.lang.void, podemos ver que java.lang.void é uma classe de wrapper para a palavra -chave void.
Public Static Final Class <Void> type = (classe <Void>) classe.getPrimitiveclass ("void");Uso vazio
A classe Void é uma classe de espaço reservado não instável. Se o método retornar um tipo de vazio, o método poderá retornar apenas um tipo nulo.
Exemplos são os seguintes:
public void test () {return null;}Use o cenário 1:
Futuro <Void> f = pool.submit (novo callable () {@Override public void Call () lança a exceção {...... retornar null;}});Por exemplo, usando a interface chamada, a interface deve retornar um valor, mas não há dados a serem retornados após a execução real. Neste momento, você pode usar o tipo de vazio como tipo de retorno.
Use o cenário 2:
Reflita todos os métodos com o valor de retorno vazio.
public class Test {public void hello () {} public static void main (string args []) {for (método método: test.class.getMethods ()) {if (method.getReturntype (). igual (void.type)) {system.out.println (métod.getname (); }}}}Resultados da execução:
MainhellowaiwaitWaitNotifyNotifyAll
PS: o seguinte introduz a comparação e o uso de java.lang.void e void
A palavra -chave vazia significa que a função não retorna o resultado e é uma palavra -chave no Java.
java.lang.void é um tipo. Por exemplo, atribua um valor de nulo a uma referência vazia.
Nulo nulo = nulo;
Através do código da classe Void, podemos ver que o tipo de vazio não pode ser herdado ou instanciado.
public finalclass void { /** * O objeto {@code class} representando o pseudo-tipo correspondente a * a palavra-chave {@code void}. */ @Suppresswarnings ("desmarcado") Public Static Final Class <Void> type = (Class <Void>) Class.getPrimitiveClass ("void"); / * * A classe vazia não pode ser instanciada. */ private void () {}}Vazio como resultado de retorno de uma função indica que a função retorna nulo (exceto NULL não pode retornar outros tipos).
Função void (int a, int b) {// faça algo retornar nulo; }Antes de aparecer genéricos, o Void era geralmente usado na reflexão. Por exemplo, o código a seguir imprime o nome do método do tipo de retorno vazio.
public class Test {public void Print (String v) {} public static void main (string args []) {for (método método: test.class.getMethods ()) {if (method.getReturntype (). Equals (void.type)) {System.out.Println (Metod.getName ();); }}}} Depois que os genéricos aparecerem, o tipo de vazio será usado em alguns cenários. Por exemplo, Future<T> é usado para salvar os resultados. O método GET do futuro retornará o resultado (tipo T).
Mas e se a operação não retornar um valor? Nesse caso, pode ser representado pelo Future<Void> . Quando o resultado é calculado após a chamada, ele retornará nulo após o retorno.
Além disso, o Void também é usado em mapas sem valor. Por exemplo, Map<T,Void> , então o mapa terá a mesma função que Set<T> .
Portanto, quando você usa genéricos, a função não precisa retornar o resultado ou um objeto não precisa do valor. Isso pode ser representado pelo tipo java.lang.void.
Resumir
O acima exposto é uma explicação detalhada da análise de classe e uso de java.lang.void apresentado a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!