使用Java泛型,我尝试实现一个通用的控制台输入方法。
public static <T> T readFromInput(String message, Class<?> c) throws Exception{
System.out.println(message);
Scanner scanner = new Scanner(System.in);
try {
if(c == Integer.class)
return (T) Integer.valueOf(scanner.nextInt());
if(c == String.class)
return (T) scanner.nextLine();
if(c == Double.class)
return (T) Double.valueOf(scanner.nextDouble());
if(c == Float.class)
return (T) Float.valueOf(scanner.nextFloat());
} catch (InputMismatchException e) {
throw new Exception(e);
}
return null;
}
我收到了一个警告 "类型安全:从Integer到T的未检查转换"。除了使用@SuppressWarnings,还有其他方法可以避免这个警告吗?
有没有更好的实现方法?谢谢。