我想做这个:
public <C extends Collection<?>> C<File> strings_to_files(C<String> strings)
{
C<File> files = new C<File>();
for(String string : strings)
{
files.add(new File(string)
}
return files;
}
我只是想让它采取任何字符串集合,并返回与文件相同的集合类型.有没有办法做到这一点?或者我可能只是语法错误…
最佳答案 直接做到这一点没有好办法.我认为最简单的方法是将目标集合作为第二个参数传递:
public void string_to_files(Collection<String> strings, Collection<File> files) {
for(String string : strings) {
files.add(new File(string));
}
}
然后,客户端代码可以决定它想要回收的集合类型.这不符合您的要求,但它是避免必须施放和抑制警告的最简洁方法.
或者,只需声明方法以返回Collection< File> (或特定的Collection实现类型)并实例化您选择的特定Collection类型.