我有两个类,如FirstClass和SecondClass。在FirstClass中,我声明了一个String类型的变量,然后我将该变量赋值给SecondClass类型。但它显示了一个例外。请帮忙。
这是代码。
FirstClass.java
public static void main(String[] args) {
// TODO Auto-generated method stub
SecondClass sc;
String a = "world";
Object obj = a;
sc = (SecondClass) obj;
System.out.println("" + sc);
}
的ErrorMessage。
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to com.study.SecondClass
at com.study.FirstClass.main(FirstClass.java:13)
答案 0 :(得分:1)
Java的输入非常强。在Java中没有办法做到这一点。 Java记住类型 - “world”不是SecondClass
对象,不能强制进入它。
即使你有两个相同的类,比如说ClassOne
和ClassTwo
- 你仍然无法使用这种方法在它们之间进行转换。
你可以做的一件事是在SecondClass中添加一个带有String的构造函数,并根据该String给你一个SecondClass类型的对象。但即便如此,String和SecondClass对象也是截然不同的。
答案 1 :(得分:0)
Object obj = a;
sc = (SecondClass) obj;
在编译时,您告诉java编译器您的对象obj实际上是SecondClass类的对象。所以它编译得很好。但是在运行时它会知道obj不是SecondClass的实例。所以它会在运行时抛出异常。你无法施展任何东西。
用例:
类型转换在多态性的情况下是有意义的。例如,您已使用多态引用子类对象。在以后的某个时间点,您需要使用仅在子类中定义和实现的某个函数。然后你需要输入强制转换为该子类(实际上你的对象是),然后在其上调用所需的函数。