2011-11-15 6 views
0

と同じ型の新しいインスタンスを作成:私は、単純な私の質問を維持しようとするでしょう別のintsance

私は、次のインスタンスを持っている:

MainClass mc = new ExtendingClass()

私はブランドの新しいを作成したいですインスタンスmcを参照してください。 私は複数のページをオンラインで読みましたが、適切な答えが見つかりませんでした。

何かのように見えるでしょう〜(おそらくあなたが理解するのに役立ちます)。 MyClass mc2 = new mc.getBaseClass()

基本的な結果はこれと同じでなければなりません:

MyClass mc2 = ExtendingClass()しかし、それは、様々な拡張クラスのインスタンスであることができるように私は、実行時にmc2を作成することができます。

ありがとうございます。

答えて

1

あなたは試みることができる:ExtendingClassは引数なしか、デフォルトコンストラクタを持っている場合はもちろんの

mc.getClass().newInstance(); 

これはのみ動作します。あなたは、コンストラクタに引数を処理したい場合は、それが(例えば、あなたがStringを取るコンストラクタを持っている場合は)ほんの少し複雑になります:

Constructor<ExtendingClass> constructor = mc.getClass().getConstructor(String.class); 
constructor.newInstance("foo"); 
+0

welp、これはトリックを行うようです。しかし、スロー宣言を使用したり、try-catchでそれを囲むような強制的な方法はないのでしょうか? – Acidic

+0

@Acidic:いいえ、引数がないコンストラクタやコンストラクタのプライベートなものなどがなく、それを達成するために例外が必要な場合は、ランタイムがエラーを通知する必要があるためです。 – Mac

+1

@Acidicなぜあなたはtry-catchを避けようとしていますか?これは標準的で有用な構成であり、Javaなしではそれほど遠くには到達できません。 – Dogmatixed

関連する問題