如果一个java方法接受(Object,Object..),有没有一种方法可以向其中输入一个参数



我有一个第三方库(Springfox,但这里的哪一个并不重要(,它有一个签名为tags(Tag first, Tag... remaining)的方法。因为我需要在这个方法中输入大约十几个标签,所以为了可读性和可维护性,我想把它分成一个单独的方法:

public Tag[] generateTags(){
return new Tag[]{
new Tag("Tag1", "Tag 1 Description"),
// other tags
};
}

问题是,我不能简单地将Tag[]数组输入第三方库方法,因为它与标记的方法签名不匹配(Tag,Tag…(。我得到错误

Docket类型中的方法标记(Tag,Tag…(不适用于参数(Tag[](

编译时

。这当然是意料之中的事,不过我觉得有些奇怪的是,Java编译器没有识别出varArgs参数与之前的参数类型相同,并允许数组同时填充这两个参数。

除了在tags((调用中定义第一个标记,然后在外部方法中定义其他标记的简单解决方案之外,还有其他解决方案吗?

您可以编写一个包装器方法来解决您的问题。只需将第一个Tag从Array中分离出来,然后将其余部分输入第二个参数:

public void tagsWrapper(Tag[] tags){
Tag first = tags[0];
Tag[] other = Arrays.copyOfRange(tags, 1, tags.length);
tags(first, other);
}

相关内容

  • 没有找到相关文章

最新更新