【发布时间】: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<String> -
List<String>不一定是LinkedList<String>,对吧?它可以是ArrayList<String>或其他类型的列表。你不明白什么? -
您已将参数类型限制为仅
LinkedList,这意味着您不能传递List的任何其他实现或超类型本身。 -
在我看来,我创建了类型为“LinkedList”的“res”。为什么我不能将它传递给方法“helper”,它有一个参数“LinkedList”。我对吗?谢谢