如何在java中将字符串类型转换为我自己的用户类类型

时间:2013-11-16 05:56:21

标签: java casting

我有两个类,如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)

2 个答案:

答案 0 :(得分:1)

Java的输入非常强。在Java中没有办法做到这一点。 Java记住类型 - “world”不是SecondClass对象,不能强制进入它。

即使你有两个相同的类,比如说ClassOneClassTwo - 你仍然无法使用这种方法在它们之间进行转换。

你可以做的一件事是在SecondClass中添加一个带有String的构造函数,并根据该String给你一个SecondClass类型的对象。但即便如此,String和SecondClass对象也是截然不同的。

答案 1 :(得分:0)

Object obj = a;
sc = (SecondClass) obj;

在编译时,您告诉java编译器您的对象obj实际上是SecondClass类的对象。所以它编译得很好。但是在运行时它会知道obj不是SecondClass的实例。所以它会在运行时抛出异常。你无法施展任何东西。

用例:

类型转换在多态性的情况下是有意义的。例如,您已使用多态引用子类对象。在以后的某个时间点,您需要使用仅在子类中定义和实现的某个函数。然后你需要输入强制转换为该子类(实际上你的对象是),然后在其上调用所需的函数。