如果 java 方法接受 (Object, Object...),有没有办法将单个参数输入其中?
If a java method accepts (Object, Object...), is there a way to feed a single parameter into this?
我有一个带有签名 tags(Tag first, Tag... remaining)
的方法的第 3 方库(Springfox,但这里使用哪个并不重要)。因为我需要将大约一打标签输入到该方法中,所以我想将其拆分为一个单独的方法以提高可读性和可维护性:
public Tag[] generateTags(){
return new Tag[]{
new Tag("Tag1", "Tag 1 Description"),
// other tags
};
}
问题是我不能简单地将 Tag[] 数组提供给第 3 方库方法,因为它与标签(Tag、Tag...)的方法签名不匹配。我收到错误
The method tags(Tag, Tag...) in the type Docket is not applicable for the arguments (Tag[])
在编译时。这当然是完全可以预料的,尽管我发现 Java 编译器无法识别 varArgs 参数与它之前的参数属于同一类型并允许数组填充它们这两个参数有点奇怪。
除了在 tags() 调用中定义第一个标签然后在外部方法中定义其他标签的简单解决方案之外,还有其他解决方案吗?
您可以编写一个包装器方法来解决您的问题。只需从您的数组中拆分第一个标签,然后将其余的提供给第二个参数:
public void tagsWrapper(Tag[] tags){
Tag first = tags[0];
Tag[] other = Arrays.copyOfRange(tags, 1, tags.length);
tags(first, other);
}
我有一个带有签名 tags(Tag first, Tag... remaining)
的方法的第 3 方库(Springfox,但这里使用哪个并不重要)。因为我需要将大约一打标签输入到该方法中,所以我想将其拆分为一个单独的方法以提高可读性和可维护性:
public Tag[] generateTags(){
return new Tag[]{
new Tag("Tag1", "Tag 1 Description"),
// other tags
};
}
问题是我不能简单地将 Tag[] 数组提供给第 3 方库方法,因为它与标签(Tag、Tag...)的方法签名不匹配。我收到错误
The method tags(Tag, Tag...) in the type Docket is not applicable for the arguments (Tag[])
在编译时。这当然是完全可以预料的,尽管我发现 Java 编译器无法识别 varArgs 参数与它之前的参数属于同一类型并允许数组填充它们这两个参数有点奇怪。
除了在 tags() 调用中定义第一个标签然后在外部方法中定义其他标签的简单解决方案之外,还有其他解决方案吗?
您可以编写一个包装器方法来解决您的问题。只需从您的数组中拆分第一个标签,然后将其余的提供给第二个参数:
public void tagsWrapper(Tag[] tags){
Tag first = tags[0];
Tag[] other = Arrays.copyOfRange(tags, 1, tags.length);
tags(first, other);
}