Tag: 可选参数

java可选参数

我想在java中编写一个平均方法,它可以消耗N个项目,返回它们的平均值: 我的想法是: public static int average(int[] args){ int total = 0; for(int i=0;i<args.length;i++){ total = total + args[i]; } return Math.round (total/args.length); } //test it average(1,2,3) // s**hould return 2. 如何更改我的方法以使用任何数量的参数而不是int [] args所以可以按我想要的方式工作? 干杯

Guava可选作为可选参数的方法参数

最近我与我的队友讨论了在方法中使用Guava Optional作为可选参数的问题。 让我们说方法是 List getBooks(String catalogId, Optional categoryId) { Validate.notNull(catalogId); Validate.notNull(categoryId); // Point of conflict. Is this required? 它接受一个catalogId和一个可选的 categoryId ,它返回该目录中列出的书籍,如果也传递了类别,则只返回该类别中的书籍。 冲突点是,Validating Optional categoryId进行空检查。 我认为不应该对它进行空检查,因为它是一个可选参数。 函数的调用者可以传递null或者Optional.absent()和getBooks函数应该通过在实现中执行if(categoryId==null && categoryId.isPresent())来处理这两种情况。 我的意见是, Optional参数的可选性只是使方法的合同更加清晰。 通过查看方法签名,可以告诉该参数是可选的,不需要读取javadoc。 但是当他不想使用那个可选参数时,他不应该被迫传递Optional.absent() 。 我的队友有不同的看法。 他想对它进行空检查,因此强制调用者总是传递Optional.absent() 。 他的观点是我们为什么要传递null可选。 此外, getBooks(“catalog123”, Optional.absent())看起来比getBooks(“catalog123”, null)更具可读性。 此方法位于我们的库包中,并由我们拥有的多个包使用。 对于此方案,您对Optional使用有何建议? 谢谢