Tag: 可变参数函数

Java:通用方法重载模糊

考虑下面的代码: public class Converter { public <K> MyContainer<K> pack(K key, String[] values) { return new MyContainer<>(key); } public MyContainer<IntWrapper> pack(int key, String[] values) { return new MyContainer<>(new IntWrapper(key)); } public static final class MyContainer<T> { public MyContainer(T object) { } } public static final class IntWrapper { public IntWrapper(int i) { } } public static […]

如何将可变parameter passing给另一个方法?

我GOOGLE了,并知道如何使用可变参数。 但我想通过我的可变参数到另一种方法。 即时通讯错误。 怎么做 ? -(void) aMethod:(NSString *) a, … { [self anotherMethod:a]; // im doing this but getting error. how to pass complete vararg to anotherMethod }

为什么Java可变参数不支持集合?

在我的Java代码中,我经常使用非常方便的method(Class… args)可变参数。 据我所知,它们允许你传递任何数量的Class对象或Class[]的数组。 由于我也经常使用Java集合类,所以我对两者之间缺乏兼容性感到沮丧。 结果,我最终做了collection.toArray() ,但是有一些types安全问题。 所以现在的问题是:为什么Java不允许Iterable<T>实例作为可变参数,只要genericstypes符合可变参数的T…types? 不是每个人都使用列表,集合等吗? 有没有一个简单的,types安全的方式来提供从收集转换为可变参数?

含generics和可变参数的模糊重载java方法

我想了解Java如何处理函数调用中的歧义。 在下面的代码中,对method的调用是不明确的,但method不是。 我觉得两者都是模棱两可的,但是为什么当我注释掉method的调用时,这会编译? 为什么方法2也不明确? public class A { public static <K> List<K> method(final K arg, final Object… otherArgs) { System.out.println("I'm in one"); return new ArrayList<K>(); } public static <K> List<K> method(final Object… otherArgs) { System.out.println("I'm in two"); return new ArrayList<K>(); } public static <K, V> Map<K, V> method2(final K k0, final V v0, final Object… […]

Java未选中:为varargs参数未经检查的通用数组创build

我已经设置Netbeans在我的Java代码中显示未经检查的警告,但我无法理解以下几行的错误: private List<String> cocNumbers; private List<String> vatNumbers; private List<String> ibans; private List<String> banks; … List<List<String>> combinations = Utils.createCombinations(cocNumbers, vatNumbers, ibans); 得到: [unchecked] unchecked generic array creation for varargs parameter of type List<String>[] 方法来源: /** * Returns a list of all possible combinations of the entered array of lists. * * Example: [["A", "B"], ["0", "1", […]

在Go中连接两个切片

我试图把切片[1, 2]和切片[3, 4] [1, 2]结合起来。 我怎么在Go上做这个? 我试过了: append([]int{1,2}, []int{3,4}) 但得到: cannot use []int literal (type []int) as type int in append 但是, 文件似乎表明这是可能的,我错过了什么? slice = append(slice, anotherSlice…)

通过可变参数可能造成的堆污染

我知道这与Java 7使用可变参数与genericstypes时发生; 但是我的问题是.. 当Eclipse说“它的使用可能会污染堆”究竟是什么意思呢? 和 新的@SafeVarargs注释如何防止这种情况发生?

你怎么能传递多个原始参数到AsyncTask?

有相关的问题,比如我如何将2个parameter passing给一个AsyncTask类? ,但我碰到了徒劳地试图将多个原语作为parameter passing给AsyncTask的困难,所以我想分享我发现的东西。 这个微妙的东西在现有的问题和答案中并没有被体现出来,所以我想帮助那些和我一样遇到同样问题的人,并帮他们解决痛苦。 问题是这样的:我有多个原始参数(例如两个长),我想传递给一个AsyncTask在后台执行 – 怎么可以做? (我的答案…经过一段时间的努力…可以在下面find。)

h和hh修饰符用于printf的目的是什么?

除了%hn和%hhn (其中h或hh指定指向对象的大小), printf格式说明符的h和hh修饰符有什么意义? 由于标准要求的可变参数函数的默认升级,不可能将char或shorttypes的参数(或其任何有符号/无符号变体)传递给printf 。 根据7.19.6.1(7), h修饰符: 指定后面的d,i,o,u,x或X转换规则适用于short int或unsigned short int参数(参数将根据整数提升进行提升,但其值将转换为short int或打印之前无符号短整型); 或者一个下面的n转换规范适用于一个短int参数的指针。 如果参数实际上是shorttypes或unsigned shorttypes,那么将int提升为int ,然后将其转换为short或unsigned short将会产生与提升为int相同的值 ,而不会返回任何转换。 因此,对于types为short或unsigned short , %d , %u等应该给%hd , %hu等等(对于chartypes和hh同样)。 据我所知, h或hh修饰符可能有用的唯一情况是当参数在short或unsigned short范围外传递一个int ,例如 printf("%hu", 0x10000); 但我的理解是,传递这样的错误types会导致不确定的行为,所以你不能期望它打印0。 我见过的一个真实世界的例子是这样的代码: char c = 0xf0; printf("%hhx", c); 尽pipe实现了一个简单的chartypes(在这种情况下, printf("%x", c)会打印fffffff0或类似的东西),作者期望它打印f0 。 但是这个期望值得吗? (注意:原来的types是char ,它被提升为int并被转换回unsigned char而不是char ,从而改变了被打印的值。但是标准是否指定了这个行为,或者它是一个实现细节破碎的软件可能依靠?)

如何将可变数量的parameter passing给PHP函数

我有一个PHP函数,使用func_num_args()和func_get_args() )的可变数量的参数,但我想传递函数的参数数量取决于数组的长度。 有没有办法用可变数量的参数调用 PHP函数?