Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uses for the Java Void Reference Type?

Tags:

java

void

People also ask

What is the use of void data type in Java?

The void keyword specifies that a method should not have a return value.

What are voids in Java?

void is a Java keyword. Used at method declaration and definition to specify that the method does not return any type, the method returns void .

What is void return type in Java?

A void return type simply means nothing is returned. System. out. println does not return anything as it simply prints out the string passed to it as a parameter.

What characterizes a void method in Java?

Void methods do some action (called a side-effect); they do not return any value; Type methods return some value; they do not do an action. Examples of void methods include output methods such as: outputInt, outputDouble, outputString, outputlnInt, etc.


Void has become convention for a generic argument that you are not interested in. There is no reason why you should use any other non-instantiable type, such as System.

It is also often used in for example Map values (although Collections.newSetFromMap uses Boolean as maps don't have to accept null values) and java.security.PrivilegedAction.


You can create instance of Void using reflections, but they are not useful for anything. Void is a way to indicate a generic method returns nothing.

Constructor<Void> constructor = Void.class.getDeclaredConstructor();
constructor.setAccessible(true);
Void v = constructor.newInstance();
System.out.println("I have a " + v);

prints something like

I have a java.lang.Void@75636731

Future<Void> works like charm. :)


Given that there are no public constructors, I would say it can't be assigned anything other than null. I've only used it as a placeholder for "I don't need to use this generic parameter," as your example shows.

It could also be used in reflection, from what its Javadoc says:

The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.