【问题标题】:In Java, is it possible to cast to void (not Void)?在 Java 中,是否可以强制转换为 void(不是 Void)?
【发布时间】:2011-06-17 09:08:27
【问题描述】:

我可以在 X 中添加什么来完成以下操作:

Object o = (void) X;

【问题讨论】:

  • 一句话:没有。除了让我们测试我们的舌头是否确实粘在冰冷的金属表面上的基本人类好奇心之外,您没有任何理由尝试它。
  • 您为什么要这样做? (换句话说,这对我来说毫无意义。)
  • 你真正想要达到什么目的?
  • 您能解释一下您要解决的问题吗?也许我们可以帮助解决首要问题。
  • 没有尝试使用它。我只是好奇。

标签: java void


【解决方案1】:

void 在概念上是一个原语。 (尽管大多数人会不同意,我什至怀疑)您不能将对象投射到它。

最接近这一点的是 InvocationHandler 可以 return null 用于 void 方法,而通过反射调用的 void 方法 invoke() 将返回 null。

【讨论】:

  • 关于尽管大多数人不同意:void.class.isPrimitive() 返回 true,这是唯一重要的事情
【解决方案2】:

Java 不是 C++。在 Java 中,void 不是一种类型,它是一个占位符,意思是“没有返回值”。

【讨论】:

  • 它仍然是一种类型,但是除了返回值之外你不能分配它
  • void.class 会不同意。它是一种有效使用非常有限的类型。它的包装器类型为 Void ;)
【解决方案3】:

没有。如果你愿意,你可以设置x = null;?

【讨论】:

    【解决方案4】:

    也许这个讨论可能会引起人们的兴趣: Uses for the Java Void Reference Type?,它涵盖了您可以使用 Void 做的所有事情以及它的好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 2016-05-01
      • 2013-12-25
      • 2012-04-12
      相关资源
      最近更新 更多