significa - void int java




O que devo retornar se o tipo de retorno de um método for Void?(Não é nulo!) (4)

Então, o que devo retornar se o tipo de retorno de uma função tiver que ser Void ?

Use return null . Void não pode ser instanciado e é meramente um espaço reservado para o tipo de Class<T> de void .

Qual é o objetivo do Void ?

Como mencionado acima, é um marcador de posição. Void é o que você obterá de volta se, por exemplo, usar reflexão para examinar um método com um tipo de retorno de void . (Tecnicamente, você receberá de volta Class<Void> .) Ele tem outros usos variados ao longo destas linhas, como se você quisesse parametrizar um Callable<T> .

Devido ao uso de genéricos em Java acabei tendo que implementar essa função

Eu diria que algo pode ser desagradável com sua API se você precisar implementar um método com essa assinatura. Considere cuidadosamente se há uma maneira melhor de fazer o que você quer (talvez você possa fornecer mais detalhes em uma pergunta diferente e posterior?). Estou um pouco desconfiado, já que isso só surgiu "devido ao uso de genéricos".

Devido ao uso de Generics em Java acabei tendo que implementar uma função tendo o Void como tipo de retorno:

public Void doSomething() {
    //...
}

e o compilador exige que eu retorne algo . Por enquanto eu estou apenas retornando null , mas eu estou querendo saber se isso é uma boa prática de codificação ...

Eu estou perguntando sobre V ‌oid, não v ‌oid. A classe Void , não a palavra-chave reservada void .

Eu também tentei Void.class , void , Void.TYPE , new Void() void new Void() , sem retorno em tudo, mas tudo o que não funciona em tudo. (Por razões mais ou menos óbvias) (Veja esta resposta para mais detalhes)

  • Então, o que devo retornar se o tipo de retorno de uma função for Void ?
  • Qual é o uso geral da classe Void ?

Não há como instanciar um Void, então a única coisa que você pode retornar é null.


Se, por razões obscuras, você DEVE usar este tipo, então, de fato, retornar null parece ser uma opção sensata, pois suponho que o valor de retorno não será usado de qualquer maneira.
O compilador irá forçá-lo a retornar algo de qualquer maneira.
E essa classe não parece ter um construtor público, portanto, o novo Void () não é possível.


bem assim.

public Class TestClass {
    public void testMethod () {
        return;
    }
}




void