以下代码
public class GenericsTest2 {
public static void main(String[] args) throws Exception {
Integer i = readObject(args[0]);
System.out.println(i);
}
public static <T> T readObject(String file) throws Exception {
return readObject(new ObjectInputStream(new FileInputStream(file)));
// closing the stream in finally removed to get a small example
}
@SuppressWarnings("unchecked")
public static <T> T readObject(ObjectInputStream stream) throws Exception {
return (T)stream.readObject();
}
}
在 eclipse 中编译,但不能使用 javac (类型参数 T 无法确定; 类型变量 T 没有唯一的最大实例,其上限为 T,java.lang。反对)。
当我将 readObject (String file)更改为
@SuppressWarnings("unchecked")
public static <T> T readObject(String file) throws Exception {
return (T)readObject(new ObjectInputStream(new FileInputStream(file)));
}
它在 eclipse 中编译并且使用 javac。谁是正确的,eclipse 编译器还是 javac?