简介
说明
本文用示例介绍Java中void类型的用法。
java需要一个确定的返回类型
java不像php这些弱类型的语言,java语言是强类型的,就是说:方法必须要有一个确定类型的返回值,例如:public String test(){};
上面这个test方法有一个String类型的返回值,也可以是int等基础类型,不管返回什么都要返回一个确定的类型。
方法也可以返回void,那么void肯定也是一种数据类型吧。但java好像只提供了两种数据类型:基本数据类型和引用数据类型。那这个void到底是什么呢?其实可以把它理解成一个特殊的数据类型也可以理解成一个方法的修饰符。
从Void看void
基础类型基本都有一个封装类,比如int的封装类是Integer,char的封装类是Character,void也不例外,它的封装类是Void(java.lang.Void),没错就是把“v”换成了大写的V。可以这样去理解Void:
- Void类是占位符类,可以用在想用void但必须用包装类的地方。比如:Map<String, Void>
- Void类不可以继承和实例化。
- Void类修饰方法时对应的值必须是null。
实例分析
Void是一个类,void就是一个基本类型
package org.example.a; public class Demo { public static void main(String[] args) throws Throwable { System.out.println(Void.class); System.out.println(void.class); System.out.println(Integer.class); System.out.println(int.class); } }
执行结果
class java.lang.Void void class java.lang.Integer int
必须且只能返回null
//返回void,return可有可无 public void a1() { return; } //必须且只能返回null public Void a2() { return null; }
使用场景
反射中确定某个函数的返回类型
package org.example.a; import java.lang.reflect.Method; public class Demo { public static void main(String[] args) throws Throwable { for (Method method : Demo.class.getMethods()) { if (method.getReturnType().equals(Void.TYPE)) { System.out.println("返回void的方法是:" + method.getName()); } else if (method.getReturnType().equals(Integer.TYPE)) { System.out.println("返回int的方法是:" + method.getName()); } } } public void a() { } public int b() { return 1; } }
执行结果
返回void的方法是:main 返回int的方法是:b 返回void的方法是:a 返回void的方法是:wait 返回void的方法是:wait 返回void的方法是:wait 返回int的方法是:hashCode 返回void的方法是:notify 返回void的方法是:notifyAll
泛型
Void也用于无值的Map中,例如Map<String,Void>,此时value必须为null。
请先
!