-2

是否可以在 Java 中强制转换没有默认构造函数的对象?如果是,如何?

4

1 回答 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 回答