java - 如何编写一个接受类型 x 的数组和另一个与该数组类型相同的变量的方法

标签 java generics

我想编写一个接受数组和其他东西的通用方法。其中每一个都可以是任何类型,但它们必须相同。我试过了,但我仍然可以在该方法中输入任何内容。

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/

相关文章:

java - 维护和控制 GUI 状态和子状态

Java 泛型(通配符)

java - Java 中的动态泛型类型

delphi - "reference to"解决什么问题

c# - 反序列化为通用排序列表 C#

java - 作为 Java 应用程序运行会弹出选择 Java 应用程序屏幕,无需进一步说明

java - 半透明窗口内的半透明 JPopupMenu - 替代方案?

java - 如何在 Java 中启动 shell 终端 session 并使用它来放置命令并读取其结果以保持先前的上下文

java - 使用 Shebang 运行 nashorn 不接受 -cp 选项

c# - 在抽象方法中使用泛型