我想编写一个接受数组和其他东西的通用方法。其中每一个都可以是任何类型,但它们必须相同。我试过了,但我仍然可以在该方法中输入任何内容。
public static <T> boolean arrayContains(T[] array, T object){
return Arrays.asList(array).contains(object);
}
我可以用 arrayContains(new String[]{"stuff"}, new Pig())
调用这个方法,但我只希望它接受 arrayContains(new String[]{ “东西”},“更多东西”)
最佳答案
您尝试做的事情很棘手,因为任何数组(基元数组除外)都是 Object[]
,因此正如您所注意到的,该方法将始终接受任何数组和任何对象.
解决这个问题的一种方法是传递一个显式的 Class
对象,就像这样
public static <T> boolean arrayContains(T[] array, T object, Class<T> clazz)
然后你可以写
arrayContains(new String[]{"stuff"}, "more stuff", String.class)
但不是
arrayContains(new String[]{"stuff"}, new Pig(), String.class)
关于java - 如何编写一个接受类型 x 的数组和另一个与该数组类型相同的变量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27568248/