【问题标题】:incompatible types between List and LinkedListList 和 LinkedList 之间的类型不兼容
【发布时间】:2020-02-10 08:03:38
【问题描述】:

我想知道为什么代码会抛出错误:不兼容的类型:列表无法转换为 LinkedList。

但是,当我将方法 helper 更改为:

public void helper(String curr, List res,int left,int right,int n){

或者我更改调用构造函数的代码: LinkedList res = new LinkedList();

class Solution {
public List<String> generateParenthesis(int n) {
   List<String> res = new LinkedList<String>();
    helper("",res,0,0,n);
    return res;        
}

public void helper(String curr, LinkedList<String> res,int left,int 
right,int n){  
    if(right==n) {res.add(curr); return;}
    if(left<n) helper(curr+"(",res,left+1,right,n);
    if(right<left) helper(curr+")",res,left,right+1,n);
    }
}

【问题讨论】:

  • 您发送的参数是使用参数的超类型键入的。这是不允许的。这里最好将方法的参数类型更改为List&lt;String&gt;
  • List&lt;String&gt; 不一定是LinkedList&lt;String&gt;,对吧?它可以是ArrayList&lt;String&gt; 或其他类型的列表。你不明白什么?
  • 您已将参数类型限制为仅LinkedList,这意味着您不能传递List 的任何其他实现或超类型本身。
  • 在我看来,我创建了类型为“LinkedList”的“res”。为什么我不能将它传递给方法“helper”,它有一个参数“LinkedList”。我对吗?谢谢

标签: java list types


【解决方案1】:
List<String> res = new LinkedList<>();

在这一行中,您将LinkedList 分配给List 类型变量。所以你的 res 变量的类型将是List,而不是LinkedList

然后您尝试将您的List 类型变量传递给采用LinkedList 类型参数的方法。所以这是不可能的。

因此,您可以将 res 变量的类型更改为 LinkedList 或将方法参数更改为 List

【讨论】:

    猜你喜欢
    • 2013-11-11
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 2011-05-15
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多