是否可以在 Java 中强制转换没有默认构造函数的对象?如果是,如何?
问问题
345 次
1 回答
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;
于 2012-06-07T23:07:39.193 回答