在Java中是否可以转换没有默认构造函数的对象?如果是,怎么样?
答案 0 :(得分:1)
正如任何其他演员一样。
强制转换不会创建新对象,它只会告诉编译器将引用视为给定类的对象。
所以,你有
Object obj = new String("Hi");
String k = obj;
第二行无效,因为它将超类分配给更具体的引用,因此您必须告诉编译器obj
确实是 String的对象实例。
String k = (String) obj;
这是一个人为的例子,说明了没有默认构造函数的观点:
public class Foo
{
public Foo(int i) { ; }
}
public class Bar extends Foo
{
public Bar(int i, String s) { super(i); }
}
final Foo foo = new Bar(42, "Arthur");
final Bar bar = (Bar) foo;