-2

デフォルトのコンストラクタを持たないオブジェクトをJavaでキャストすることは可能ですか? はいの場合、どのように?

4

1 に答える 1

1

他のキャストとまったく同じです。

キャストは新しいオブジェクトを作成しません。参照を特定のクラスのオブジェクトとして扱うようにコンパイラに指示するだけです。

だから、あなたは持っています

 Object obj = new String("Hi");
 String k = obj;

2 行目は、より具体的な参照にスーパークラスを割り当てているため無効です。そのため、実際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 に答える