Java 泛型类型:不适用于参数
我在编码时遇到了这个错误。有谁能向我解释为什么它不适用,以及如何修复它。提前多谢 错误:类型SearchTools12中的方法linSearch(T[],T)不可用 适用于参数(int[],int)Java 泛型类型:不适用于参数,java,generics,Java,Generics,我在编码时遇到了这个错误。有谁能向我解释为什么它不适用,以及如何修复它。提前多谢 错误:类型SearchTools12中的方法linSearch(T[],T)不可用 适用于参数(int[],int) import java.util.NoSuchElementException; 公共类搜索工具12{ 公共静态int[]createSequence(int n){ int[]a=新的int[n]; 对于(int i=0;i而言,linSearch(T[]a,T x)需要一个T数组,但您试图传递一
import java.util.NoSuchElementException;
公共类搜索工具12{
公共静态int[]createSequence(int n){
int[]a=新的int[n];
对于(int i=0;i而言,linSearch(T[]a,T x)
需要一个T
数组,但您试图传递一个int
数组。数组int[]
的类型与数组T[]
的类型不同
要实现此目的,您可以尝试更改:
linSearch (T x, T... a) // vararg of generic T
然后打电话:
linSearch(x, createSequence(n)) // passing int[] to T...
linSearch(T[]a,T x)
需要一个T
数组,但您正试图传递一个int
数组。数组的类型int[]
与数组的类型T[]
不同
要实现此目的,您可以尝试更改:
linSearch (T x, T... a) // vararg of generic T
然后打电话:
linSearch(x, createSequence(n)) // passing int[] to T...
这是因为int
是一种基本类型,它在java中具有特定的角色,因此您不能将int[]
强制转换为T[]
。您可以使用Integer[]
而不是使用基本类型,并且应该可以正常工作。因此,您应该将createSequence
方法更改为
public static Integer[] createSequence(int n) {
Integer[] a = new Integer[n];
for (int i = 0; i < a.length; i++) {
a[i] = i + 1;
}
return a;
}
公共静态整数[]createSequence(int n){
整数[]a=新整数[n];
for(int i=0;i
原因是int
是一种基本类型,它在java中有特定的角色,因此您不能将int[]
强制转换为T[]
。您可以使用Integer[]
而不是使用基本类型,并且应该可以正常工作。因此,您应该将createSequence
方法更改为
public static Integer[] createSequence(int n) {
Integer[] a = new Integer[n];
for (int i = 0; i < a.length; i++) {
a[i] = i + 1;
}
return a;
}
公共静态整数[]createSequence(int n){
整数[]a=新整数[n];
for(int i=0;i
我没有JDK来进行测试,但我认为调用方法的正确语法是linSearch(createSequence(n),x)。您的方法声明为泛型,调用时必须精确关联的类型小心:x==a[I]
对于大多数不是枚举类型的类型都会失败。在Java中,=
比较引用,这意味着只有当操作数是完全相同的对象时,它才会计算为true,而不是检查等价性。顺便说一句,linSearch
没有理由是泛型的--public static int linSearch的声明(Object[]a,Object x)
将接受完全相同的可能参数,并以相同的方式工作。我没有JDK来进行测试,但我认为调用方法的正确语法是linSearch(createSequence(n),x)。您的方法声明为泛型,在调用它时必须精确关联的类型小心:x==a[I]
对于大多数不是枚举类型的类型都会失败。在Java中,=
比较引用,这意味着只有当操作数是完全相同的对象时,它才会计算为true,而不是检查等价性。顺便说一句,linSearch
没有理由是泛型的--public static int linSearch的声明(Object[]a,Object x)
将接受完全相同的可能参数,并以相同的方式工作。通常,类型B的容器对类型Bagree的可浇铸性较差(或根本不可浇铸)。类型B的容器对类型B的可浇铸性较差(或根本不可浇铸)