Java方法参数不适用

Java方法参数不适用,java,collections,Java,Collections,首先,由于缺乏更好的头衔而任命。希望有更多Java经验的人能够将其更改为更合适的版本 因此,我面临以下例外情况: 方法copyPartialMatches(String、Iterable、T)在类型中 StringUtil不适用于参数(字符串,字符串[], (列表) 此方法的示例说明: 参数: 令牌-要搜索的字符串 原始-要筛选的字符串的可编辑集合。 集合-要向其添加匹配项的集合 我的代码: public class TabHandler implements TabCompleter {

首先,由于缺乏更好的头衔而任命。希望有更多Java经验的人能够将其更改为更合适的版本

因此,我面临以下例外情况:

方法copyPartialMatches(String、Iterable、T)在类型中 StringUtil不适用于参数(字符串,字符串[], (列表)

此方法的示例说明:

参数:
令牌-要搜索的字符串
原始-要筛选的字符串的可编辑集合。
集合-要向其添加匹配项的集合

我的代码:

public class TabHandler implements TabCompleter {
    private static final String[] params = {"help", "menu", "once", "repeat", "infinite", "cancel"};

    @Override
    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
        final List<String> completions = new ArrayList<>();
        StringUtil.copyPartialMatches(args[0], params, completions);

        Collections.sort(completions);
        return completions;
    }
}
公共类TabHandler实现TabCompleter{
私有静态最终字符串[]参数={“帮助”,“菜单”,“一次”,“重复”,“无限”,“取消”};
@凌驾
公用列表onTabComplete(CommandSender-sender、Command-Command、字符串别名、字符串[]args){
最终列表完成=新建ArrayList();
StringUtil.copyPartialMatches(参数[0],参数,完成);
集合。排序(完成);
返回完成;
}
}

我很确定问题出在
完成列表上。也许这不是一个有效的集合?这是我的理解,但现在我只是在这里不知所措。所以希望你们能帮我。

尝试将实际的
列表作为第二个参数传递给
StringUtil#copyPartialMatches

@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
    final List<String> completions = new ArrayList<>();
    StringUtil.copyPartialMatches(args[0], Arrays.asList(params), completions);
    //                                     ^^^ change is here

    Collections.sort(completions);
    return completions;
}
@覆盖
公用列表onTabComplete(CommandSender-sender、Command-Command、字符串别名、字符串[]args){
最终列表完成=新建ArrayList();
StringUtil.copyPartialMatches(args[0],Arrays.asList(params),completions);
//这里有零钱
集合。排序(完成);
返回完成;
}

尝试将实际的
列表作为第二个参数传递给
StringUtil#copyPartialMatches

@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
    final List<String> completions = new ArrayList<>();
    StringUtil.copyPartialMatches(args[0], Arrays.asList(params), completions);
    //                                     ^^^ change is here

    Collections.sort(completions);
    return completions;
}
@覆盖
公用列表onTabComplete(CommandSender-sender、Command-Command、字符串别名、字符串[]args){
最终列表完成=新建ArrayList();
StringUtil.copyPartialMatches(args[0],Arrays.asList(params),completions);
//这里有零钱
集合。排序(完成);
返回完成;
}

字符串[]
不可
编辑。改变

StringUtil.copyPartialMatches(args[0], params, completions);
而是传递一个
列表
。大概

StringUtil.copyPartialMatches(args[0], Arrays.asList(params), completions);

String[]
不可
Iterable
。改变

StringUtil.copyPartialMatches(args[0], params, completions);
而是传递一个
列表
。大概

StringUtil.copyPartialMatches(args[0], Arrays.asList(params), completions);

数组
不实现Iterable接口。这就是方法签名不匹配的原因。将
数组
转换为
列表
有效,因为后者实现了接口

数组的
forEach
循环是一种特殊情况(数组没有实现
Iterable
接口,但是使用
forEach
循环工作)。

数组
不实现Iterable接口。这就是方法签名不匹配的原因。将
数组
转换为
列表
有效,因为后者实现了接口


数组的
forEach
循环是一种特殊情况(数组没有实现
Iterable
接口,但使用
forEach
循环工作)。

谢谢!立即解决问题^^^将在能够接受时接受:)谢谢!直接解决了问题^^^将在能够接受时接受:)谢谢,这确实解决了问题。我会接受Tim Biegeleisen的回答,因为他稍微快一点。但是你的两个答案都一样好:)@icecub没问题。很高兴问题解决了。谢谢,这确实解决了问题。我会接受Tim Biegeleisen的回答,因为他稍微快一点。但是你的两个答案都一样好:)@icecub没问题。很高兴问题得到解决。谢谢,我相信这些信息对未来的读者会有用。谢谢,我相信这些信息对未来的读者会有用