【问题标题】:Generics: Type not applicable for arguments泛型:类型不适用于参数
【发布时间】:2015-07-07 21:33:51
【问题描述】:

使用泛型,编译器应该在运行时推断对象 T 的类型,但是它给了我一个静态违规,如标题中所述,我无法弄清楚(使用其他问题)来解决这个问题。

这是我的方法:

public static <T> boolean linearSearchIterative(T[] array, T obj) {
    for(int i = 0; i < array.length; i++) {
        if(array[i].equals(obj)) {
            return true;
        }
    }
    return false;
}

这是我在 main 方法中声明它的方式:

int x[] = {2, 3, 5, 6, 1};
int y = 1;
System.out.println(LinearSearch.linearSearchIterative(x, y));

【问题讨论】:

  • 使用整数而不是整数
  • 基元不是对象。你可能需要一个 Integer[] 和 Integer

标签: java algorithm generics


【解决方案1】:

Java 中的泛型仅适用于引用类型,不适用于原始类型。

将运行代码改为:

Byte x[] = {2, 3, 5, 6, 1}; // or Integer
Byte y   = 1;               // or Integer

【讨论】:

  • 我使用了Integerint,由于某种原因我不需要Integer 来作为变量y,有人知道为什么吗?
  • 因为 Java 5 的自动装箱功能。
  • 字节或整数在这里无关紧要。所有数字都适合字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2012-08-27
  • 1970-01-01
相关资源
最近更新 更多