当前位置: 首页 > 知识库问答 >
问题:

为什么`test2()`方法编译成功,而`test1()`却没有成功?

公冶高义
2023-03-14

为什么test2()方法编译成功,而test1()没有成功?

import java.util.Arrays;
import java.util.List;

public class Test {

    public <N extends Number> List<N> test1(){
        //compile error: Type mismatch: cannot convert from List<Integer> to List<N>
        return Arrays.asList(1,2,3);
    }

    public List<? extends Number> test2(){
        //no compile error
        return Arrays.asList(1,2,3);
    }

}

共有1个答案

樊杰
2023-03-14

如果您编写调用这些方法的代码,就会变得更加清晰。

例如:

public static void main (String args) {
    Test obj = new Test();
    List<Double> list1 = obj.test1 ();
    List<? extends Number> list2 = obj.test2 ();
}

如您所见,test1()的输出可以分配给一个列表 ,这意味着它不能返回一个列表

 类似资料:
  • 我正在编写一个spring-mvc应用程序(并学习spring-mvc)。我没有向pom.xml添加servlet依赖项。当我运行或时,它会成功地完成。不是应该抛出类似“can not find javax.servlet.http.HttpServlet”这样的异常吗?它是如何编译的?

  • 我用map创建消息,并使用原型3(原型-3.0.0-alpha-3.1-windows-x86_64.exe编译器)生成java pojo。但是在消息生成器中没有map的put方法。 这是原型文件片段: 在用户中。Builder没有putAllContact()方法。 在谷歌的文档中说 虽然我可以使用这些代码将键/值放入地图 我仍然想知道为什么我生成的java pojo没有map的put方法。 谢

  • 我使用vs代码,并且已经安装了“vs代码的Lombok注释支持”。我使用maven clear然后进行编译,结果编译失败。然后,当我尝试maven编译几秒钟后,它构建成功。我在两个maven编译之间没有执行任何操作。 我检查了错误消息,似乎Lombok注释不起作用。 当它成功的时候,我得到了信息 而我的pom.xml是 我想知道我应该把插件版本改成旧版本吗?但当我将其更改为3.1.0时,就会出现C

  • 问题内容: 我有一个在目录下生成源的插件。它被连接到generate- sources阶段,如下所示: 问题是,当我使用文件时,文件将不会放在罐子中。我在那里看到所有文件,但没有。 我阅读了有关此问题的所有问题,但不知道如何解决该问题。我正在使用Maven3.0.x。 问题答案: build-helper插件确实解决了这个问题。感谢@Joe的评论。

  • 我使用IntelliJ进行java开发。我想在我只有shell访问权限的另一台主机上运行我的应用程序。 当我在本地运行应用程序时,一切都很好。当我尝试在远程主机上编译代码时,我得到: 文件位于同一目录中: 我也不能在本地编译,除非它来自IDE,所以我假设我只是没有做正确的事情。我错过了什么?我只想能够从shell运行我的应用程序,我真的不在乎如何运行。