返回一个Void对象
什么是正确的方式来返回一个Voidtypes,当它不是一个原始的? 例如。 我目前使用null如下。 
 interface B<E>{ E method(); } class A implements B<Void>{ public Void method(){ // do something return null; } } 
	
Void类是一个不合理的占位符类,用于保存对表示Java关键字void的Class对象的引用。
所以以下任何一个就足够了:
-  用Object参数化并返回new Object()或null
-  用Void参数化并返回null
-  用你的NullObject参数化
 你不能使这个方法void ,而其他任何东西都会返回。 由于这个东西被忽略了,你可以返回任何东西。 
  Java 8引入了一个新类, Optional<T> ,可以在这种情况下使用。 要使用它,你可以稍微修改你的代码,如下所示: 
 interface B<E>{ Optional<E> method(); } class A implements B<Void>{ public Optional<Void> method(){ // do something return Optional.empty(); } } 
 这允许您确保始终从方法中获取非null的返回值,即使没有任何返回值。 当与null可以或不可以被返回的工具结合使用时,这是特别有用的,例如Eclipse @NonNull和@Nullable注解。 
如果你只是不需要任何东西作为你的types,你可以使用void。 这可以用于实现function或操作。 然后你可以做这样的事情:
 interface Action<T> { public T execute(); } abstract class VoidAction implements Action<Void> { public Void execute() { executeInternal(); return null; } abstract void executeInternal(); } 
或者你可以省略抽象类,并且在每个不需要返回值的操作中都返回null。
然后你可以使用这样的动作:
给定一个方法
 private static <T> T executeAction(Action<T> action) { return action.execute(); } 
你可以这样称呼它
 String result = executeAction(new Action<String>() { @Override public String execute() { //code here return "Return me!"; } }); 
或者,对于无效的行为(请注意,你没有把结果分配给任何东西)
 executeAction(new VoidAction() { @Override public void executeInternal() { //code here } }); 
没有genericstypes会告诉编译器一个方法什么都不返回。
我相信约定是inheritance作为types参数使用对象
要么
 传播types参数,然后让你的类的用户使用对象实例化和分配对象的types通配符使用types通配符?  : 
 interface B<E>{ E method(); } class A<T> implements B<T>{ public T method(){ // do something return null; } } A<?> a = new A<Object>();