【发布时间】:2020-05-06 08:41:16
【问题描述】:
public class GenMethodDemo2 {
static <T, V extends T> boolean isIn(T x, V[] y){
for (int i = 0; i < y.length; i++) {
if (x.equals(y[i])) return true;
}
return false;
}
@Test
public void test(){
Integer[] nums = {1,2,3,4,5};
if(isIn("java",nums)) System.out.println("java is in nums");
if(!isIn("java",nums)) System.out.println("java is not in nums");
}
}
当我使用 jdk8 时,这段代码运行良好,结果是 java is not in nums
但是当我更改为 jdk7 时,相同的代码将无法编译,并且提示 msg 为Inferred type 'java.lang.Integer' for type parameter 'V' is not within its bound; should extend 'java.lang.String'
我想知道:当函数显式定义类型参数绑定V extends T时,jdk8如何编译这段代码?
【问题讨论】:
-
在jdk7上怎么运行不好?
-
@Thilo 抱歉,strArray 在 test(){ String[] strArray = {"hello","java","is","well"}; }
-
你在 Java 7 上遇到了什么问题?
-
不同的JDK版本导入哪个版本的库会不会有区别?
-
@ernest_k 很抱歉提出问题忘记添加明确的错误消息,我更改了它希望澄清错误
标签: java generics java-8 java-7