如何在java中将字符串类型转换为我自己的用户类类型
我有两个班,像头等舱和二等舱。在第一个类中,我声明了一个字符串类型的变量,然后将该变量分配给第二个类类型。但它显示了一个例外。请帮忙 这是代码 FirstClass.java如何在java中将字符串类型转换为我自己的用户类类型,java,casting,Java,Casting,我有两个班,像头等舱和二等舱。在第一个类中,我声明了一个字符串类型的变量,然后将该变量分配给第二个类类型。但它显示了一个例外。请帮忙 这是代码 FirstClass.java public static void main(String[] args) { // TODO Auto-generated method stub SecondClass sc; String a = "world"; Object obj = a; sc = (SecondCl
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);
}
错误消息
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)
Java是非常强类型的。在Java中无法做到这一点。Java记住类型“world”不是
SecondClass
对象,不能强制进入它
即使您有两个相同的类,比如ClassOne
和ClassTwo
,您仍然无法使用这种方法在它们之间进行转换
但您可以做的一件事是在SecondClass中添加一个构造函数,该构造函数接受一个字符串,并基于该字符串为您提供SecondClass类型的对象。但即使这样,字符串和第二个类对象也是不同的
Object obj = a;
sc = (SecondClass) obj;
在编译时,您告诉java编译器您的对象obj实际上是类SecondClass的对象。这样就可以了。但在运行时,它会知道obj不是SecondClass的实例。所以它会在运行时抛出异常。你就是不能对任何事情施加任何影响
用例:
在多态性的情况下,类型转换是有意义的。例如,您对子类对象使用了多态引用。稍后,您需要使用一些仅在子类中定义和实现的函数。然后您需要将其类型转换为该子类(实际上您的对象就是该子类),然后对其调用所需的函数。您应该学习OOP的基础知识