【发布时间】:2014-01-27 21:03:30
【问题描述】:
public static int toInt(Object a)
{
return (int) a;
}
public static Object tInput()
{
return read.nextLine();
}
当我尝试时
public static void main (String []args)
{
System.out.println( toInt(tInput()) );
}
我得到一个类转换异常——即使我输入了数字!!!整数!
我不知道我做错了什么。谁能帮忙?
====编辑====
人们说我不能转换它,因为它是一个字符串。
我尝试了另一种方法,这很有效。
有人可以解释吗?
public static void check()
{
Object h = 2014;
int a = (int) h;
System.out.println(a);
}
【问题讨论】:
-
read是什么,nextLine返回什么? -
您编辑中的代码起作用的原因是因为存储在
h中的对象的运行时类型是int。您用来引用它的引用h是一个可以包含任何Object的引用。由于您为其分配了int值,因此您可以将其转换为int,因为您将int转换为int。如果你改为使用Object h = "Hi mom!"; int a = (int) h;,那么你会得到一个类强制转换异常,因为你试图将String强制转换为int。 -
没有将任意对象“投射”到
int的通用方法。 “转换”操作断言所引用的变量是被转换为的类型,或者(仅在基元的情况下)可以使用明确定义的技术转换为该类型。您显然想要做的是将 String 转换为 int。在这种情况下,将参数声明为 String 并使用 Integer.parseInt。将参数声明为 Object 只会延迟到运行时出现可以在编译时检测到的错误。