Void 和 no parameter 有什么区别?
我有一个类,它定义了两个重载方法
public void handle(Void e)
protected void handle()
显然他们是不同的,特别是.handle(Void e)
public
这两者之间有什么区别?
如何调用第一种方法?我正在使用 - 这是正确的吗?handle(null)
我有一个类,它定义了两个重载方法
public void handle(Void e)
protected void handle()
显然他们是不同的,特别是.handle(Void e)
public
这两者之间有什么区别?
如何调用第一种方法?我正在使用 - 这是正确的吗?handle(null)
Void
是一个特殊类,通常仅用于反射 - 它的主要用途是表示 void 方法的返回类型。来自 Javadoc for Void
:
Void 类是一个无法证实的占位符类,用于保存对表示 Java 关键字 void 的 Class 对象的引用。
由于无法实例化该类,因此可以传递给具有类型参数的方法(如 )的唯一值是 。Void
Void
handle(Void e)
null
这是事件的官方版本,但对于那些感兴趣的人,尽管在 javadoc 中声称相反,您实际上可以实例化:Void
Void
Constructor<Void> c = Void.class.getDeclaredConstructor();
c.setAccessible(true);
Void v = c.newInstance(); // Hello sailor!
也就是说,当您想要指示类型被“忽略”时,我已经看到“有用地”用作泛型参数类型,例如:Void
Callable<Void> ignoreResult = new Callable<Void> () {
public Void call() throws Exception {
// do something
return null; // only possible value for a Void type
}
}
Callable
的泛型参数是返回类型,因此当像这样使用时,即使需要使用接口,例如,如果使用框架,它也会向代码的读者发出一个明确的信号,即返回的值并不重要。Void
Callable
Executor
第一个函数是单个参数的函数,必须提供该参数并且只能有效地取值 。除 null 以外的任何值都不会编译。第二个函数不采用任何参数,传递给它也不会编译。null
null