【问题标题】:Can `public <T extends Number> T method( Integer x ) {...}` take input of a type that extends Integer?`public <T extends Number> T method(Integer x) {...}` 可以接受扩展整数类型的输入吗?
【发布时间】:2019-03-03 01:24:28
【问题描述】:

我对练习考试中的一个问题感到困惑。

在 Java 中,Integer 类扩展了基本抽象类 Number。现在,假设 我们有一个带有如下签名的方法:

public &lt;T extends Number&gt; T method( Integer x ) {...}

对于以下每一项,请在空白处填写“可以”或“不能”以正确完成 声明。

方法______接受任何扩展整数类型的输入

我很困惑,因为当我尝试创建自己的扩展 Integer 的类时,IntelliJ 告诉我,“不能从 final 'java.lang.Integer' 继承”。

如果我不能从 Integer 类继承,那么我如何首先提供“扩展 Integer”的输入?

【问题讨论】:

  • 嗯,这是一个典型的糟糕的考试问题,问题文本不清楚,提问者要么试图聪明地提出超出范围的问题,要么他们未能创建合适的示例。我会选择“不能”并在文本旁边写下我选择该答案的原因。
  • 该方法可以接受任何扩展整数类型的输入。但是没有。

标签: java generics inheritance integer


【解决方案1】:

那句话的表述很糟糕。我希望这样写是为了让学生感到困惑,而不是因为他们忘记了原始类型的包装器是 final 类。

所以,要回答您的问题,答案应该是“不能”。
但如果可以的话,请与你的教授或考官澄清这一点。

【讨论】:

    【解决方案2】:

    您应该查看javadoc。您不能扩展声明为 final 的类

    【讨论】:

      【解决方案3】:

      Java 的 Integer 类是final,它不能被继承。

      public final class Integer extends Number implements Comparable<Integer> 
      

      【讨论】:

        猜你喜欢
        • 2013-08-13
        • 2022-06-16
        • 2017-05-21
        • 1970-01-01
        • 1970-01-01
        • 2020-08-22
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        相关资源
        最近更新 更多