转换为没有默认构造函数的类

时间:2012-06-07 22:59:38

标签: java constructor

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

1 个答案:

答案 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;