文章目录
- 一、介绍
- 二、 java.lang.Void 特点
一、介绍
在Java中,java.lang.Void 是一个特殊的包装类,用于表示 void 类型。虽然 void 关键字在Java中通常用于表示方法没有返回值,但 java.lang.Void 类提供了对 void 类型的一个有限的、有用的封装。
二、 java.lang.Void 特点
- 单例:Void 类有一个私有的构造方法,并且预定义了一个公共的、只读的 TYPE 字段,它是 Void 类的一个实例。这意味着你不能创建 Void 类的其他实例,只能使用 Void.TYPE。Void源码如下:
// 类使用final关键字修饰,说明该类不能被继承
public final class Void { /** * The Class object representing the primitive type void. */ @SuppressWarnings("unchecked") public static final Class<Void> TYPE = (Class<Void>) Class.getPrimitiveClass("void"); // 构造函数使用private修饰,说明该类不能被实例化private Void() {}
}
- 在泛型中的使用:Void类可能本身作用就只是不起任何作用,但是本身只是一个占位符类。即Void类本身只是一个占位符类,多用于泛型中作占位符使用。Void 在泛型编程中特别有用,尤其是在涉及函数式接口和lambda表达式时。例如,java.util.function.Function 接口在Java 8中引入,它接受一个输入参数并返回一个输出值。如果函数没有返回值(即返回类型为 void),则可以使用 Function<T, Void>。
- 反射:由于 Void.TYPE 是 Class 的一个实例,因此它可以用于反射API,例如获取 void 类型的 Class 对象。
public class TestVoid {public void fun(String str) {}public static void main(String args[]){for(Method method : Test.class.getMethods()) {if(method.getReturnType().equals(Void.TYPE)) {System.out.println(method.getName());}}}
}
总的来说,java.lang.Void 提供了对 void 类型的一个封装,使得在需要对象而不是基本类型的地方可以使用它。但是,你应该谨慎使用它,因为它在大多数情况下并不是必需的。