【问题标题】:can't cast wrapper to object无法将包装器投射到对象
【发布时间】:2017-12-08 20:37:23
【问题描述】:

我有两个长变量,我想将它们转换为对象类型。我知道如果我将 long 变量转换为 Long 包装器,然后将包装器转换为它会起作用的对象,但是编译器说“不能从 Long 转换为文本”文本是一个对象类型。

private quantity start;
private quantity end;

public quantity(long s , long e) {
    Long e1 = (Long) e;
    Long s1 = (Long) s;
    start = (quantity) s1;
    end = (quantity) e1;
}

【问题讨论】:

  • 但是Long 不是text,那么是什么让您认为可以将其转换为一个?
  • text 只是一个例子,我不想将 long 转换为字符串。我想将它转换为另一个数字对象。
  • 不要试图编造假设的例子,而应该发布实际代码以避免此类问题。请参阅:minimal reproducible example

标签: java casting wrapper


【解决方案1】:

textLong 之间没有关系,因此任何从 text 转换为 Long 或反之亦然的尝试都将导致失败。

只有在两个给定类型之间存在关系时才可能进行强制转换。

【讨论】:

    【解决方案2】:

    为了将文本、字符串、长整数或其他数字数据类型,您必须使用数据类型解析方法将其转换。

    青峰所说的关系是正确的。 短 -> 整数 -> 长

    【讨论】:

      【解决方案3】:

      如果您的目的是使用 long 的字符串表示形式,那么您可以使用以下内容。

      Long.toString(number);
      

      然后您可以将其分配给文本类型。我在这里假设文本代表一些字符串数据。

      【讨论】:

      • 不,text只是我实际代码的一个例子,text是一个数字,我随机取的名字。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多