import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;
public class fillRandom {
public static List<Integer> IntFill(){
return new Random().ints(10,0,100).boxed().collect(Collectors.toList());
}
}
public class Main {
public static void main(String[] args) throws Exception {
List linkedList = new LinkedList<Integer>();
Print printer = new printImpl();
linkedList = (LinkedList) fillRandom.IntFill();
printer.print(linkedList);
}
}
根据ToList
的文档,不能保证返回的列表类型,它特别要求您使用ToCollection
对返回的列表的类型、可变性、序列化性或线程安全性没有任何保证;如果需要对返回的列表进行更多的控制,请使用toCollection(供应商)
。
如果您不使用ToCollection
的原因只是为了避免使用IntFill
中的特定实现,并且希望允许调用方指定他们想要的List
,那么您可以使用Supplier
参数给用户该选项,就像ToCollection
所做的那样。
public static <C extends Collection<Integer>> C intFill(Supplier<C> collectionSupplier){
return new Random().ints(10,0,100).boxed()
.collect(Collectors.toCollection(collectionSupplier));
}
用法:
List<Integer> linkedList = fillRandom.intFill(LinkedList::new);
或者,使用LinkedList
构造函数从ToList
收集器返回的List
创建LinkedList
列表,而不是强制转换。
List<Integer> linkedList = new LinkedList<>(fillRandom.intFill());
请注意,这样做的一个缺点是,它将再次循环整个列表,这可能是不可取的。
问题内容: 有没有一种方法可以将对象强制转换为方法的返回值?我尝试过这种方式,但在“ instanceof”部分给出了编译时异常: 我也尝试过这个,但是它给出了运行时异常ClassCastException: 有没有一种简便的方法可以做到这一点: 编辑:我写了正确答案的工作副本: 问题答案: 您必须使用实例,因为在编译过程中会擦除通用类型。 该方法的声明是: 这也可以用于数组类型。它看起来像这样:
有没有一种简单的方法可以做到这一点: 编辑:我写了一份正确答案的工作副本:
我正在编写一个code-gen工具,用于使用Spring-Data-Jpa为Spring-boot应用程序生成后端连接代码,CrudRepository中的方法返回Iterable而不是List,这让我有点恼火,因为Iterable没有提供足够的功能,但是List提供了,所以我正在寻找将Iterable转换为List的最佳方法。 我看到了这篇关于将可迭代转换为集合的文章,我想知道,与其使用像Gua
问题是,如果我执行上述^,以访问endpoint上的请求信息,则如果筛选器验证失败,我就不能再中止筛选器中的请求,因为我会得到以下错误: 似乎如果您在Jerseyendpoint上定义任何类型的参数,这些参数可以在ContainerRequestContext中访问,那么它将不允许您中止过滤器中的过滤器链。 一个解决方法(我还没有尝试过,但假设会成功)是这样做:如果过滤器验证失败,我可以只向请求添
方法(下面)是一个类型,我用作参数的类是一个。我想知道我选角的方式是否管用: 这就是方法: 此URL指向类: 我把它放进了粘贴箱,因为课程太长了。
我有一个函数从服务器获取一个文件并解析了该文件,我正在使用一个具有如下完成处理程序的函数来获取该文件 但是,当我尝试使用该函数时 我得到无法将类型“()”的返回表达式转换为返回类型“String”的错误。 知道我做错了什么吗?